Форум: "WinAPI";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];
ВнизКак побороть Unicode ? Найти похожие ветки
← →
avkiev (2003-08-08 13:56) [0]Есть у меня переменная V типа вариант, в которой сидит юникод-строка. Нужно ее оттуда вытащить. Делаю так:
var v: Variant;
ws: WideString;
...
ws := v;
После этого вижу в переменной WS одни знаки вопроса и всякие непечатные символы.
Как правильно скопировать из переменной типа вариант, содержащей юникод, в WideString ?
Заранее благодарен
← →
Игорь Шевченко (2003-08-08 14:06) [1]Убедиться, что VarType(v) = varOleStr для начала
← →
Onyx (2003-08-08 14:06) [2]Не знаю я с вариантами не общался, но попробуй так:
ws := WideString(v);
Приведение типов меня часто выручало, хотя с вариантами не уверен. А если быть точным, то вообще не знаю можно ли так делать. Если б Delphi была под рукой, то возможно я бы этого и не написал.
← →
avkiev (2003-08-08 14:43) [3]> Убедиться, что VarType(v) = varOleStr для начала
Да, это так
> ws := WideString(v);
Увы, не помогло
Спасибо ответившим. Другие мысли есть ?
← →
Игорь Шевченко (2003-08-08 15:24) [4]На D6 оба updatepack установлено ? У них, AFAIK, была проблема с вариантами.
← →
avkiev (2003-08-08 15:38) [5]Честно говоря - не знаю. В About пишет: "Version 6.0 Build 6.163". Думаешь, паки помогут ?
← →
Игорь Шевченко (2003-08-08 16:04) [6]Не помешают - это точно
← →
avkiev (2003-08-08 16:14) [7]Разобрался я.
На самом деле в варианте сидит не юникод, а UTF-8. Как его преобразовать в юникод ?
Можно было бы использовать функцию UTF8ToUnicode, но она перекодирует строку. А как перекодировать вариант ?
← →
Игорь Шевченко (2003-08-08 16:24) [8]Ну структура варианта-то известна...
← →
avkiev (2003-08-08 16:34) [9]Что-то не получается. Пишу так:
var pw: pWideChar;
v: Variant;
...
( pw, @(v)Что-то не получается. Пишу так:
var pw: pWideChar;
v: Variant;
...
n := UTF8ToUnicode(pw, @(v), 10);
Вычитывает какой-то бред ...
← →
jack128 (2003-08-08 16:45) [10]
> avkiev (08.08.03 16:34)
не совсем так.. вот пример для строки
procedure TForm1.Button1Click(Sender: TObject);
var
v : variant;
s : string;
begin
v := "test string";
s :=string(TVarData(v).vString);
showmessage(s);
end;
точно не знаю как там хранятся твои utf-8 строки, но наверно аналогично. Соответсвенно
n := UTF8ToUnicode(pw, Pointer(TvarData(v).vString), 10);
← →
avkiev (2003-08-08 17:39) [11]Мастера Дельфи !
Большое вам человеческое спасибо ! Все получилось !
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c