проблема с unicode строкой

Тема в разделе "WASM.BEGINNERS", создана пользователем zxcth, 21 окт 2009.

  1. zxcth

    zxcth New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2009
    Сообщения:
    16
    У меня большая просьба переделать фрагмент Delphi куска на язык Си (VS 2008).

    Вот фрагмент:

    И потом еще мне надо в си сравнить си-строку и уникод-строку, я пробовал конвертить через WideCharToMultiByte но не получилось, может с параметрами накосячил, в общем помогите пожалуйста.
     
  2. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    SetLength() устанавливает объём буффера у TString
    вторая строчка тут вообще делает лишь
    My_Procedure(&ws,2); // sizeof(wchar)==2

    так что невозможно угадать подходящий тебе вариант реализации не зная - что делает твоя процедура с ws.
     
  3. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Хочу флудонуть 3 вещи:
    1. форумов по делфи куча ( я не то что против ) но какого хрена здесь?
    2. в делфи работа с указателями это извращения (го си)
    3. Comer_ прав
     
  4. zxcth

    zxcth New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2009
    Сообщения:
    16
    SPA
    Я как бы и так пытаюсь "го си" :)

    правильно ли я переделал:

    ?
     
  5. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    нет, тут
    ws=(WCHAR*)malloc(2*len);
    ты в переменную ws запихиваешь поинтер на аллоцированную память, что правильно,

    а тут
    My_Procedure(&ws,2);
    передаёшь указатель на эту переменную, то есть указатель на указатель.

    надо просто:
    My_Procedure(ws,2);
     
  6. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    zxcth
    yну так то оно правильно така не понятно что надо сделать этим кодом, ведь len не определена
     
  7. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    точно, не заметил.
     
  8. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    да, а я забыл про инициализацию len .)
    double'ninjad, что называется )
     
  9. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    про завершающий ноль тоже надо помнить.
     
  10. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    ну может быть он подразумевается len, ведь не сказано что len - длина строки, так что не надо тут.
     
  11. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    понятное дело, это я так, напоминаю.