Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
7-10987
DeadMeat
2003-06-20 18:41
2003.09.04
Хук на клаву...


14-10944
malkolinge
2003-08-14 19:32
2003.09.04
А кто такой деятель с ником имя(красного цвета перечеркнутый)


14-10956
VEG
2003-08-13 17:51
2003.09.04
Дообновлял свою BIOS...


1-10706
Sirakuz
2003-08-19 16:33
2003.09.04
ListBox с более 32000 итемов


1-10677
Боян Георгиев
2003-08-20 23:52
2003.09.04
TMainMenu





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский