![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перевод проекта на UNICODE... [Delphi, Windows]
MTsv DN © (2006-10-26 18:04:00)Начал переводить свой проект... Объявил UNICODE_CTRLS естественно многое перестало работать... Меня сейчас интересует вот что, достаточно ли заменить String на KOLString, или надо на KOLChar...
L`Autour (2006-12-04 06:42:00) [1]В KOL.pas ошибка:
//[procedure TWStrList.Insert]
procedure TWStrList.Insert(Idx: Integer; const W: WideString);
var P: Pointer;
begin
while Idx < Count-2 do
fList.Add( nil );
GetMem( P, (Length( W ) + 1) * Sizeof(WideChar) );
fList.Insert( Idx, P );
WStrCopy( P, PWideChar( W ) );
end;
при Idx < Count-2 программа входит в зацикливание.
L`Autour (2006-12-01 11:59:00) [2]Пробую заставить работать демку KOLHilightEdit UNICODE_CTRLS.
При переходе на UNICODE-проект возникает некоторая путаница с определенными в KOL функциями для обработки строк. Раньше все были для работы с String и Char и отдельно было дублирование части этих функций под Unicode. Сейчас в части из них используется KOLString и KOLChar и после включения UNICODE_CTRLS они сразу переходят на WideString и WideChar (взникла куча неявных перекодирований ANSI <-> Unicode).
vampir_infernal (2006-11-30 21:48:00) [3]нашел все-таки я этот шрифт в дистрибе офиса. Буду пробовать.
ANTPro (2006-11-30 20:30:00) [4]> [44] vampir_infernal (30.11.06 17:40)
> Перерыл всю папку с виндой, с офисом и установочный пакет
> офиса (2003),
Пиратские? :) У меня есть Arial Unicode MS...
C:\WINDOWS\Fonts\ARIALUNI.TTF [22,1 МБ]
vampir_infernal (2006-11-30 17:40:00) [5]Перерыл всю папку с виндой, с офисом и установочный пакет офиса (2003), никакого Arial Unicode не нашел. В ворде в диалоге выбора шрифта тоже такого нет. Уважаемые, вышлите мне его пожалуйста на почту.
MTsv DN (2006-11-30 16:57:00) [6]Я просто коряво выразился... Для отображения UNICODE-языков везде...и в именах файлов,и в метках дисков и т.д. и т.п.
MTsv DN (2006-11-30 16:57:00) [7]Я просто коряво выразился... Для отображения UNICODE-языков везде...и в именах файлов,и в метках дисков и т.д. и т.п.
L`Autour (2006-11-30 12:50:00) [8]Мне для отображения китайского хватило "Arial Unicode MS", а он как универсальный шрифт идет в составе MS-офисов.
MTsv DN (2006-11-30 09:48:00) [9]1. L'Autour прав... Есть,конечно,только-UNICODE шрифты,но в остальных,поддержка определяется наличием кодовой страницы. Но и это еще не все... Для корректного отображения,например,китайского,японского или арабского языка,надо включить систему отображения их в приложениях. Для этого,в "Панель Управления->Языки и Регион. настройки->Дополнительно" устанавливаются два флажка (их лэйбла не помню,а компа под рукой нет). Вставляешь диск с Виндой и ждешь... Установится ~230мб.
2. Если 100% уверен,что UNICODE-символов не будет,то можно и String поставить...
L`Autour (2006-11-30 09:27:00) [10]vampir_infernal
1) Все шрифты и так Unicode, только содержащие конкретные кодовые страницы [неподдерживаемые сиволы отображаются вопросами]. Наиболее полный "Arial Unicode MS". RichEdit умеет при необходимости подключает дполнительный шрифт.
vampir_infernal (2006-11-30 08:54:00) [11]Занялся переводом нескольких своих проектов на unicode. Возникло несколько вопросов:
1) какие шрифты нужны для отображения юникод-символов на форме\контролах?
2) есть метод объекта GetSomething, который возвращает строку. В этой строке заведомо не могут содержаться юникод-символы (возвращаемые значения объявлены константами в коде и содержат только символы латиницы). Есть ли необходимость менять этот метод на GetSomething: KOLString, или можно оставить GetSomething: string?
L`Autour (2006-11-01 12:34:00) [12]Мда. Просто, хотя его и обновили, а дату рядом изменить забыли.
MTsv DN (2006-11-01 11:34:00) [13]
> Начали матюгаться что хотят PAnsiChar параметры вместо PWideChar,
> хотя ссылаются нормально на:
>
> KOL_unicode.inc:
> function LoadCursor; external user32 name 'LoadCursorW';
Надо новый KOL_unicode.inc скачать было... Там добавлений море...
L`Autour (2006-11-01 07:12:00) [14]Кстати в редакторе AkelPad есть такая особенность установки шрифта. Выбранный шрифт меняет отображение только тех символов, которые в нем поддерживаются, а остальные отображаются вроде с помощью Arial Unicode MS.
Такое отображение текста можно добавить в KOL?
L`Autour (2006-11-01 06:59:00) [15]Пришлось еще исправить:
KOL.PAS:
3348: aAddText: procedure( Sender: PControl; const S: string);
После этого еще все String в объекте REReadText поменять на KOLString
Обращения к функциям типа:
LoadCursor( Inst, ResName );
LoadBitmap( Instance, Rsrc );
Начали матюгаться что хотят PAnsiChar параметры вместо PWideChar, хотя ссылаются нормально на:
KOL_unicode.inc:
function LoadCursor; external user32 name 'LoadCursorW';
Пришлось сделать в них принудительный PAnsiChar:
LoadCursor( Inst, PAnsiChar(ResName));
И наконец-то я увидел в своей проге китайские иероглифы.
Vladimir Kladov (2006-10-31 21:23:00) [16]Сейчас, сейчас. Света не было.
Vladimir Kladov (2006-10-31 15:28:00) [17]вроде слил. И еще куча исправлений. Взял "какой-попало-проект" (свой) и перевел в unicode. Были еще проблемы с комбо, листбоксом, апплетом, листвью (как раз OnLVData понадобилась). Пришлось еще типов добавить, иначе Delphi упорно хочет создать событие с параметрами Char и String вместо KOLChar и KOLString (а если KOL_Char = type Char, то тогда может). Сейчас вернусь, обновленьице делать буду.
Vladimir Kladov (2006-10-31 04:51:00) [18]точно разные, мой косяк. Забыл, что обновление не делал, и взял папку из приготовленных к обновлению файлов, которой не удалось воспользоваться. А когда проверял на финише, еще делал правки. Вечером закончу сливать.
MTsv DN (2006-10-30 21:47:00) [19]
> А здесь перестарался:
>
> {$IFNDEF UNICODE_CTRLS} // Удалить
> function CreateWindowEx(dwExStyle: DWORD; lpClassName: PChar;
>
> lpWindowName: PChar; dwStyle: DWORD; X, Y, nWidth, nHeight:
> Integer;
> hWndParent: HWND; hMenu: HMENU; hInstance: HINST; lpParam:
> Pointer): HWND;
> stdcall; external user32 name 'CreateWindowExA';
> {$ENDIF} // Удалить
> {$ENDIF}
Ошибся... Здесь ВСЕ В ПОРЯДКЕ!!!
MTsv DN (2006-10-30 21:16:00) [20]И в некоторых функциях, забыл:
var Buf: String;-> var Buf: KOLString;
Например в:
function TStrList.LoadFromFile(const FileName: KOLstring): Boolean;
function TStrList.AppendToFile(const FileName: KOLstring): Boolean;
function TStrList.SaveToFile(const FileName: KOLstring): Boolean;
Ну, вроде все свои "косяк" упомянул...