![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Unicode
Bartov © (2003-03-11 14:37:00)
var
ws: WideString;
st: string;
begin
st := "#1048";
ws := st; ??????
end;
Как сделать чтоб wsприняла от stзначение как символ, а не строку.
т.е. ws := #1048, а НЕ ws := "#1048".
Yury Sidorov (2003-03-12 12:51:00) [1]
Ну, тогда, действительно, ручками :)
Bartov (2003-03-12 11:54:00) [2]
2 Yury Sidorov
Резон в том, что я читаю текстоваый файл, а там
Caption = #1048#1085#1092#1086#1088#1084#1072#1094#1080#1103
вот такая цепочка.
Поэтому надо сначало в integer переводим, а потом в string.
Я вот и хотел узнать как можно по другому сделать, оказывается ни как...
Yury Sidorov (2003-03-12 10:36:00) [3]
Вообще-то проще всего объявить строковой литерал как resourcestring, а затем присвоить строке типа WideString. Ресурсы всегда хранятся в UNICODE.
Bartov (2003-03-12 07:59:00) [4]
2 SPeller
Ну я ж говорю, стормозил ;-)
SPeller (2003-03-12 03:49:00) [5]
2 Bartov (12.03.03 02:12)
Ну дык я ж тебе то же самое говорил :-)
Bartov (2003-03-12 02:12:00) [6]
2 centronix
Сенкс, ws := WideChar(1048) получилось, что-то я стормозил...
А для составление строки unicode:
SetLength(ws, 2);
ws[1] := WideChar(1044);
ws[2] := WideChar(1072);
ShowMessage(ws);
Результат: "Да"
centronix (2003-03-12 01:04:00) [7]
Ну, дык, вроде ws:=WideChar(1048) (без "$") эквивалентно ws:=#1048. По крайней мере для st:=Char(65) и st:=#65 это справедливо...
Bartov (2003-03-11 22:31:00) [8]
2SPeller
> А может вместо $1048 по ставить просто 1048 ?
Нет.
Так, объясню попонятние.
В unicode код #1048 - это заглавная русская буква "И".
И это ни какой не hex или int.
Т.е. если st := #1048; это тоже самое что и st := "И";
Получается один символ!!!
А вот st := "#1048" - это строка из 5 символов.
В АПИ я не нашел ни одной функции, которая смогла бы строку перевести в 1 символ unicode. Вот что мне надо.
MultiByteToWideChar - не прокатывает, она не для этого.
Так-то я сделал перевод всей строки из unicode в ansi, но может можно как-то по другому?...
Вот пример: http://delphikol.narod.ru/progs/DfmUn2An.zip
SPeller (2003-03-11 19:54:00) [9]
А может вместо $1048 по ставить просто 1048 ?
Bartov (2003-03-11 19:26:00) [10]
2mdwmdw
Не катит... Выдает знак "?", а должна быть "И".
Пипл, подскажите кто че может.
mdwmdw (2003-03-11 16:51:00) [11]
Примерно вот так:
var
ws: WideString;
begin
SetLength(WS, 1);
WS[1]:= WideChar($1048);
end;