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

Вниз

Как правильно делать в Unicode константы и переменные?   Найти похожие ветки 

 
BPK   (2003-07-01 00:52) [0]

Когда делаю константы типа WideString всё нормально до тех пор, пока я не начинаю использовать символы с кодом выше 127.
Если я их использую (задаю числовой код символа), то шибко умный компилятор считает их ANSI-символами (пробовал с кодом 241) и пытается применить к ним текущую кодовую страницу (т.е. кириллицу), несмотря на то, что мне нужен символ с кодом $F1, а не $441 (это Unicode-вариант русской буквы с ANSI-кодом $F1).
Но мне то нужно, чтобы какой я код указал, такой бы и ложился в EXE-файл!

Кстати, то же самое касается преобразования типов переменных в WideChar.


 
Cobalt ©   (2003-07-01 09:03) [1]

может, есть какие директивы компилятору? Попробуй заглянуть в справку...


 
BPK   (2003-07-02 16:46) [2]

Уже пробовал искать. В справке таких директив нет. Более того, их нет и в списке ключей командной строки DCC32.EXE


 
Cobalt ©   (2003-07-02 19:34) [3]

покажи, как ты задаёшь константу?


 
VMcL ©   (2003-07-02 19:52) [4]

WideStr + WideChar($F1) ?


 
BPK   (2003-07-03 02:19) [5]

Попробуйте запустить у себя такую тестовую программку:

program SEU;

uses Windows;

const
{Это отображается правильно, но так записывать неудобно}
WS1:array[0..12]of WideChar=("H","a","s","t","a"," ","m","a",#$F1,
( #$F1) Попробуйте запустить у себя такую тестовую программку:

program SEU;

uses Windows;

const
{Это отображается правильно, но так записывать неудобно}
WS1:array[0..12]of WideChar=("H","a","s","t","a"," ","m","a",#$F1,
"a","n","a",#0);

{А это - неправильно: вместо буквы из набора расширенной латиницы
возникает буква, зависящая от текущей кодовой страницы. Если
текущая страница - русская, то будет русская буква "с"}
WS2:WideString="Hasta ma"#$F1"ana";

{Ещё один неправильно отображаемый пример. Здесь буква "n с тильдой"
отображается как обычная "n"}
WS3:WideString="Hasta ma"+WideChar(#$F1)+"ana";

begin
MessageBoxW(0,WS1,"Unicode example 1",0);
MessageBoxW(0,PWideChar(WS2),"Unicode example 2",0);
MessageBoxW(0,PWideChar(WS3),"Unicode example 3",0);
end.


P.S. Как жалко, что исходные коды в *.pas-файлах записываются
не в Unicode-формате. Иначе всё решалось бы просто: можно было
бы записать Unicode-строку в исходном коде как есть, и всем
было бы хорошо. Впрочем, догадываюсь, что Борланду на это плевать.


 
icWasya ©   (2003-07-03 09:43) [6]

остаётся только написать что-нибудь типа
function WWideChar(A:Word):WideChar;register;assembler;
asm
end;

и использовать так

WideStr + WWideChar($F1)



 
BPK   (2003-07-03 11:45) [7]

> остаётся только написать что-нибудь типа
> function WWideChar(A:Word):WideChar;register;assembler;
> asm
> end;
> и использовать так
>
> WideStr + WWideChar($F1)


Остаётся только упомянуть, что с константами такой вариант не пройдёт.


 
VMcL ©   (2003-07-03 18:40) [8]

>BPK (03.07.03 02:19)

A control string is a sequence of one or more control characters, each of which consists of the # symbol followed by an unsigned integer constant from 0 to 255 (decimal or hexadecimal) and denotes the corresponding ASCII character.



Страницы: 1 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.014 c
8-10843
Lamer111
2003-05-06 22:55
2003.09.04
как повернуть картинку


3-10544
TuZ
2003-08-12 10:15
2003.09.04
Уникальный номер зависящий от даты


1-10778
Spawn
2003-08-23 09:19
2003.09.04
Word


7-11006
BlackSun
2003-06-20 03:36
2003.09.04
Импорт данных (телефон, пароль)


1-10786
Vena
2003-08-22 23:55
2003.09.04
Excel