Форум: "Начинающим";
Текущий архив: 2012.04.15;
Скачать: [xml.tar.bz2];
Внизюникод Найти похожие ветки
← →
Gu (2011-12-20 22:51) [0]есть модуль с текстовыми константами, например
Const
My1="mama";
My2="mama мыла раму";
по умолчанию формат сохранения модулей (*.pas) = ansi, если изменить на юникод, то константы My1 и 2 в какой кодировке будут с точки зрения компилятора?
если вывожу их как showmessage(My2) то получаю кракозябры, если в региональных настройках системы выставлен не русский и компиляция была в режиме сохранения модуля как ansi. Если как юникод сохранено и скомпилено - то показывает норм, но тогда при текстовых операциях вида My2[x] и Length(My2) возникают проблемы.
Как сделать чтобы везде одинаково все было?
И на что влияет выбор языка в опциях проекта (Language ID в Version Info)
← →
RWolf © (2011-12-21 10:10) [1]в нынешних дельфях исходники разве не в UTF-8 должны быть?
← →
RWolf © (2011-12-21 10:11) [2]хотя нет, проверил — ansi работает.
← →
Dimka Maslov © (2011-12-21 12:34) [3]
> в нынешних дельфях исходники разве не в UTF-8 должны быть?
По умолчанию - ansi. И только когда появляются символы из других кодировок, предлагается сохранение в utf-8. То же самое и в студии.
По сути вопроса:
1. Для такого рода строковых констант я всегда пользуюсь resourcestring
2. При текстовых операциях вида My2[x] и Length(My2) проблем не возникало (независимо от кодировки). Что я не правильно делаю?
3. LanguageID в Version Info влияет только на отображение свойств файла в проводнике, а также если правильно работающий инсталлятор обнаружит в системе модуль с другим языком, он обязан будет предупредить. На работу программы это не влияет.
← →
Медвежонок Пятачок © (2011-12-21 12:41) [4]а не пофик ли если стоковый литерал это как бы и не юникод и не анси?
а он то, как объявлен идентификатор которому присвоен литерал.
← →
Gu (2011-12-21 15:03) [5]>> 3. LanguageID в Version Info влияет только на отображение свойств файла в проводнике
вот тестирование другое показывает: это значение влияет на отображение таких констант через showmessage если Id не совпадает с интерфейсом винды (выбран английский интерфейс) при выбраном не русском варианте установок для юникода (выбран английский для юникода). короче вот если с этими двумя значениями поиграться (всего 4 варианта с перезагрузками системы), то модуль откомпилированый с английским ID , будет уступать на 1 вариант правильного отображения русских букв (тестировал на Win7x64Ent).
← →
Dimka Maslov © (2011-12-21 16:02) [6]тестирование показывает, что для юникода вообще не нужны языковые настройки.
← →
Gu (2011-12-23 11:21) [7]это всем известно. вопрос не в этом.
← →
DVM © (2011-12-23 11:40) [8]
> Gu (23.12.11 11:21) [7]
Ни разу не сталкивался с тем, чтобы resourcestring содержащий русские буквы некорректно отображался на машине, где не установлена поддержка русского языка для не Unicode программ. Программа разумеется юникодная должна быть.
← →
DVM © (2011-12-23 11:42) [9]
> но тогда при текстовых операциях вида My2[x] и Length(My2)
> возникают проблемы.
независимо от того, Unicode или Ansi никаких проблем тут не должно быть.
← →
Gu (2011-12-23 11:50) [10]нет, есть проблемы при операциях с номерами символов и строки.
пока вопрос решил так
Const
My1=ansistrung("mama");
My2=ansistrung("mama мыла раму");
инче если
s:string
далее
s:=My2;
далее
ord(s[x]) на русских выдавало > 255
вообщем для решения
1. конст срзу типизировать
2. модуль с русс буквами в юникод
← →
Dimka Maslov © (2011-12-23 11:59) [11]
> ord(s[x]) на русских выдавало > 255
В юникоде русские буквы имеют коды $410..$44F, правильно выдавало.
← →
Ega23 © (2011-12-23 13:36) [12]
> При текстовых операциях вида My2[x] и Length(My2) проблем
> не возникало (независимо от кодировки). Что я не правильно
> делаю?
А ты попробуй сериализовать в стрим. Length - зашибись, но при сериализации потребуется Length(s) * SizeOf(Char)
← →
DVM © (2011-12-23 13:37) [13]
> Ega23 © (23.12.11 13:36) [12]
> А ты попробуй сериализовать в стрим.
А сериализовать поможет TWriter и о Length(s) * SizeOf(Char) можно забыть.
← →
Gu (2011-12-23 16:43) [14]Об этом не думал. Вырубает, посплю потом )
DVM - спасибо, один вы мой луч тут :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.04.15;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.003 c