Форум: "WinAPI";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];
ВнизКак правильно делать в 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c