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

Вниз

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

 
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 вся ветка

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

Наверх




Память: 0.51 MB
Время: 0.019 c
14-7610
som
2003-06-18 16:48
2003.07.03
Удаление компонент


8-7560
CrowD
2003-03-20 11:36
2003.07.03
Маштабируемость?


4-7764
Шишкин Илья
2003-04-30 17:22
2003.07.03
Как получить список dll, используемых программой?


1-7426
johny
2003-06-23 11:47
2003.07.03
Подскажите как пользоваться TreeView


14-7604
KOM
2003-06-18 15:48
2003.07.03
Многопоточность