VCL и неговата съвместимост с Unicode стандарта
Ами може да се каже,
че такава просто липсва. Много скоро новите ОС на Microsoft ще изместят напълно
98-цата. Както знаете Windows XP и неговите събратя от рода NT предлагат nativе
Unicode на приложения, които използват кирилица, арабски и т.н. Ако пуснете
вашата Delphi програма, пълна с кирилица, на едно току що инсталирано XP ще
се покажат веднага "маймуните". Едно от решенията е от настройките
на Windows да се зададе, като език за ANSI програми, Bulgarian. Някои може да
ги устройва това, но този опция е всъщност за съвместимост със стари програми.
Да вземем примера с един английско-български речник, който ръзработвам в момента.
Получавам десетки писма от хора, които имат проблем с "маймуните".
Тези, които просто не са прочели помощните файлове бързо се справят с проблема
като променят настройките на Windows, но има една група хора, извън България.
Те работят в някаква фирма и не могат да си пипат компютрите, за да изпълняват
нужди им. Получава се, че няма няма начин ANSI VCL-а да визуализира коректно
кирилицата. След доста търсене из Delphi сайтовете попаднах на един юнак, който
се е захванал да прави TNTControls, които поддържат WideString. Ето сайта на
неговия проект откъдето можете да ги свалите :
http://home.ccci.org/wolbrink/tntmpd/delphi_unicode_controls_project.htm
Въпреки, че компонетните са малко, те са основните и се надявам да ви стигнат. Ако искате да работите с AnsiString, а само при визуализиране да ги конвертирате в Unicode кирилица, трябва да използвате JCLUnicode (Project Jedi). Ето два примера за работа :
TTNTEdit:
edtSome.Text := StringToWidestringEx('днес отивам на кино', 1251);
За да заредите ANSI файл в TNTListBox
:
var
Data: TStringList;
i: Integer;
begin
Data := TStringList.Create;
try
Data.LoadFromFile('c:\somefile.txt');
TntListBox1.Items.BeginUpdate;
for i := 0 to Data.Count - 1 do
TntListBox1.Items.Add(StringToWidestringEx(Data[i],
1251));
TntListBox1.Items.EndUpdate;
finally
Data.Free;
end;
end;
Можете да намерите още
една библиотека с Unicode компоненти за Delphi на адрес :
http://mikroklubben.adsl.dk/~nikse/delphi.html#unicode
EFG's lab също има страница
по въпроса :
http://homepages.borland.com/efg2lab/OtherProjects/Unicode.htm
Скоро получих писмо от
Borut Maricic от Австралия. Той ми посочи един компонент
- VirtualTreeview на Mike Lischke, който също поддържа Unicode стандарта. За
повече информация отидете на адрес:
http://www.lischke-online.de/VirtualTreeview/VT.html
Разгледайте също и http://www.delphi-unicode.net . Това е Mike Lischke's Delphi Unicode Center, където също можете да намерите ценни неща. В основата на TNT компонетите стои неговия Unicode.pas
Очевидно започват да се появат все повече компоненти ползващи WideString. Ако Ви трябва нещо конкретно и не сте го намерили на тази страница потърсете в Torry, DSP или някой от другите сайтове за компоненти. С нетърпение очаквам новата версия на Delphi. Надявам се да има native Unicode поддръжка и така да отпаднат всякакви проблеми свързани с разработката на многоезични програми.
Наскоро реших да обновя тази статия. Ето как изглиждат нещата сега. Излезе Delphi 7. Вярно, че има поддръжка на Unicode, но не и за визуалната част. Затова пък TNT доста се разви и както гледам се превръща в сериозен проект (Borland Partner). От Microsoft newsgroup-ите вече съветват програмистите да се придържат към Unicode. Също така, когато става въпрос за програма с няколко езика да не се правят излишни опити за поддръжка и на двата стандарта едновременно.
Е това е засега по темата. Ако някой има интересна информация или някакви въпроси, да ми изпрати един мейл.
Copyright
© 2002 Wise Guy
wise_guybg@yahoo.com
Last revised: 21.04.2003