Главная страница
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.023 c
6-40564
mihail
2003-08-12 22:00
2003.10.13
Кто-нибудь работал с радио-станциями через web ?


1-40439
Mishenka
2003-10-02 01:43
2003.10.13
Как узнать какой компонент имеет фокус?


11-40334
Separotor
2003-01-30 17:59
2003.10.13
[Fatal Error] Klabel.pas(23): File not found: DsgnIntf.dcu


4-40721
Onyx
2003-08-08 12:14
2003.10.13
КОНТЕКСТНОЕ МЕНЮ в контекстном меню!!!


4-40740
VladP
2003-08-07 14:34
2003.10.13
запуск приложения от имени системы или администратора