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