Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо