Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];

Вниз

Теперь у нас есть Юникод?!   Найти похожие ветки 

 
Gandalf   (2002-10-24 18:39) [0]

Ну не у нас (пока у меня), и не факт что есть... Вообщем я перевел Windows.pas на поддержку Юникода, по условной компиляции. Т.е. если компилишь с
{$DEFINE UNICODE}. То у тебя все SuperAPIFunc это SuperAPIFuncW, а так SuperAPIFuncA. Вот так. Мне пока для CE достаточно. Но лед тронулся.


 
SPeller   (2002-10-25 01:03) [1]

Это очень даже хорошо. Поддержка Юникода не помешает.


 
Alexander   (2002-10-25 08:22) [2]

Не то, что не помешает, а очень даже поможет писать нормальные программы с встроенной изначально поддержкой разных причудливых (для нас) кодировок.


 
Gandalf   (2002-10-25 09:36) [3]

Рад что воспринято с энтузиазмом, может где выложить результат трудов? А вообще какие еще модули надо перевести для поддержки Unicode.

Если кто хочет получить модуль Windows.pas(Unicode) делай так:

var
F1,F2:Text;
N1,N2,str,tmpstr,tmpstr2:String;
begin
N1:="Windows.pas";
N2:="WindowsU.pas";
AssignFile(F1,N1);
AssignFile(F2,N2);
Reset(F1);
Rewrite(F2);
While not eof(F1) do
begin
Readln(F1,str);
Writeln(F2,str);
if (pos("function",str)<>0) then
begin
tmpstr:=str;
tmpstr2:=Parse(tmpstr,";");
if (tmpstr2[Length(tmpstr2)]="A") then
begin
// may be find it!
Readln(F1,str);
Writeln(F2,str);
tmpstr:=str;
tmpstr2:=Parse(tmpstr,";");
if (tmpstr2[Length(tmpstr2)]="W") then
begin
// find it!
Writeln(F2,"{$IFDEF UNICODE}");
Readln(F1,str);
str[Length(str)-2]:="W";
Writeln(F2," "+str);
Writeln(F2,"{$ELSE}");
str[Length(str)-2]:="A";
Writeln(F2," "+str);
Writeln(F2,"{$ENDIF}");
end;
end;
end;
end;

CloseFile(F1);
CloseFile(F2);
end;

Можно еще и процедуры(procedure"s) перевести, но вроде Юникод таких нет. Так сказать модифицируем по вкусу.


 
Alexander   (2002-10-25 10:09) [4]

Но это не всё...
Таким способом можно только консольные или имеющие формы программы писать.
Следующим шагом должна быть реализована поддержка Unicode во всех компонентах MCK - иначе не получится Unicode отобразить визуально на форме.

И ещё, я пока не работал с Delphi 7 но судя по анонсам там сделан большой шаг в сторону поддержки Unicode.


 
Gandalf   (2002-10-25 14:54) [5]

>Но это не всё...
>Таким способом можно только консольные или имеющие формы >программы писать.
>Следующим шагом должна быть реализована поддержка Unicode во >всех компонентах MCK - иначе не получится Unicode отобразить >визуально на форме.

Знаю. Но пока не до этого.

>И ещё, я пока не работал с Delphi 7 но судя по анонсам там >сделан большой шаг в сторону поддержки Unicode.

Интересно что имеенно, в их WhatsNew листе об этом не слова.


 
Alexander   (2002-10-25 15:38) [6]

Anatoly Podgoretsky постарался:
http://delphiplus.nagano.ru/articles/delphi/whats_new_in_delphi7.html
раздел про StrUtils а с VCL похоже пока никак.


 
Alexander   (2002-10-26 10:37) [7]

Ещё вопрос: а нужны ли эти директивы условной компиляции для Unicode? Ведь во всех модулях можно при желании вызывать <...>W функции. Может лучше сосредоточиться на написании MCKW (MCKU) и на реализации юникодных списков и прочих вещей?


 
Vox   (2002-10-26 11:49) [8]


> раздел про StrUtils а с VCL похоже пока никак

Написано: Для поддержки multibyte character set (MBCS) в модуль StrUtils внесены следующие изменения:
Но насколько я знаю MSCS - это не Юникод. А, например, кодировки китайского языка.


 
Alexander   (2002-10-26 11:55) [9]

MBCS - multibyte character set, т.е. мультибайтовые символы, а это и есть Unicode (WideChar и WideString)


 
Gandalf   (2002-10-26 13:01) [10]

>Ещё вопрос: а нужны ли эти директивы условной компиляции для >Unicode? Ведь во всех модулях можно при желании вызывать ><...>W функции. Может лучше сосредоточиться на написании MCKW
>(MCKU) и на реализации юникодных списков и прочих вещей?
В том-то и дело, не нужны тогда MCKW(U) и MCKA, можно сделать так что есть MCK, поставил флаг стал Юникод, снял - у тебя ANSI. Тем более, что метод с Кладовым согласован.



 
Alexander   (2002-10-26 15:27) [11]

А как это можно в Designtime в Object Inspector поменять например свойство Caption с string на widestring только изменив директиву условной компиляции?


 
Gandalf   (2002-10-26 21:26) [12]

>А как это можно в Designtime в Object Inspector поменять >например свойство Caption с string на widestring только >изменив директиву условной компиляции?
Твоя правда - никак. Конечно MCK придется править.
А вообще кто как себе представляет поддержку Юникода?


 
Alexander   (2002-10-27 08:34) [13]

Я представляю так: набор зеркальных компонент (может их можно сделать наследниками от существующик, как это сделано для VCL http://home.ccci.org/wolbrink/tnt/delphi_unicode_controls.htm). Также набор невизуальных вещей типа PWStrList и прочее ну и джентельментский кабор процедур - аналогичных стринговым.


 
SPeller   (2002-10-27 14:32) [14]


> А вообще кто как себе представляет поддержку Юникода?

Универсальный вариант - если система старая (Вин95 апример), то используем ANSI, если более новая - то Юникод (программно определяется). Это однако потребует значительных ресурсов. Вообще, мне идея с условной компиляцией более приемлема. Можно встроить во многие объекты Юникод, но это опять же - лишие байты конечного кода. Лучше всего мне кажется пока сделать эксперимент с директивами компилятора, а там уже по мере поступления предложений и накопления наработок общения с юникодом делать выводы и строить конечный вариант.


 
Alexander   (2002-10-27 15:23) [15]

Я тут немного подумал и сделал вывод, что можно обойтись и директивами условной компиляции. Только нужно будет для unicode немного по другому собирать *.inc файлы - где в Designtime попадается string - там подставлять юникодные поля компонентов.


 
Gandalf   (2002-10-27 16:26) [16]

Спасибо за идеи. Поскольку видимо KOL+CE=загнусля, так как Дельфя только под x86 компилит, а CE в основном под MIPS и SH (мда, а жаль).
То видимо я буду Юникодом заниматься.



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

Форум: "KOL";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];

Наверх









Память: 0.61 MB
Время: 0.031 c
1-7418
Zelius
2003-06-22 20:33
2003.07.03
Как у TPageControl а убить бордер, что бы он не рисовался?


3-7338
shnitken
2003-06-10 11:14
2003.07.03
Как узнать количество строк в dbgrid?


1-7506
Bel
2003-06-20 11:04
2003.07.03
Где реализация TStrings.Delete?


1-7407
Skier
2003-06-16 11:09
2003.07.03
DLL. Передача


3-7340
Monk
2003-06-10 11:18
2003.07.03
Восстановление базы Access





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский