Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.13;
Скачать: CL | DM;

Вниз

Как побороть 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 вся ветка

Текущий архив: 2003.10.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
1-40372
REA
2003-10-01 13:43
2003.10.13
Action Manager


3-40289
ViJen
2003-09-22 14:36
2003.10.13
DBF


1-40418
Chlavik
2003-09-30 18:22
2003.10.13
Рисую ListView (CustomDrawSubItem)


11-40332
Medvedev_m
2002-12-21 16:42
2003.10.13
KOL - без ДЕЛФИ!!!


8-40519
Ламер
2003-06-12 15:53
2003.10.13
Сохранение рисунка