Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Теперь у нас есть Юникод?!


Gandalf ©   (2002-10-24 18:39:00) 

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


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

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


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

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


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


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

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


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

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


Gandalf   (2002-10-26 21:26:00) [5]

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


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

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


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

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


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

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


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


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

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


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

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


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

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


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

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

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

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

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


Alexander   (2002-10-25 10:09:00) [13]

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

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


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

Рад что воспринято с энтузиазмом, может где выложить результат трудов? А вообще какие еще модули надо перевести для поддержки 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 08:22:00) [15]

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо