Портирование приложения Delphi 2006 с поддержкой юникода на Delphi 2009 - PullRequest
5 голосов
/ 19 ноября 2008

У меня есть приложение, полностью совместимое с юникодом в Delphi 2006. Я заменил все AnsiStrings на WideStrings, заменил все элементы управления VCL на элементы управления TNT и изменил все строковые функции с AnsiStrings на WideStrings. Похоже, что вся эта работа была напрасной, потому что мне придется все перевернуть. Есть ли у Trick Delphi 2009 возможность думать, что Widestrings на самом деле являются UnicodeStrings?

Ответы [ 3 ]

13 голосов
/ 19 ноября 2008

Нет, действительно нет. Но вы не пожалеете о том, что ваше приложение по-настоящему поддерживало Unicode.

Элементы управления TNT можно легко заменить обычными элементами управления VCL. Вы можете сделать это довольно просто, используя мастер из GExperts (http://www.gexperts.org), который автоматически заменяет один тип элемента управления другим.

Затем вы можете изменить все ваши объявления WideString на обычные строки. String теперь является псевдонимом для UnicodeString, поэтому все ваши строки могут хранить данные Unicode просто отлично.

Кстати, автор элементов управления TNT, Трой Волбринк, в настоящее время значительно предпочитает Delphi 2009 своим собственным элементам управления.

0 голосов
/ 19 ноября 2008

Я сделал то же самое в приложении, которое использовало разные XML-файлы в качестве входных данных. В моем случае я работал с UTF-8 (чтобы мы могли использовать обычные строки) по всей программе и преобразовывал его в WideString только для целей отображения (элементы управления TNT).

Я удалил преобразования назад и вперед между WideString и UTF-8 и вручную заменил элементы управления TNT обычными элементами управления VCL, поскольку было только несколько форм.

Преобразование заняло около часа с тестированием. Код проще и программа заметно быстрее.

0 голосов
/ 19 ноября 2008

Основным преимуществом TNT Controls является только то, что он может работать как программа Ansi в Windows 9x. Это не полный Unicode. Если вам нужна полная поддержка юникода везде (например, Stringlist.LoadFromFile, Form.OnKeyPress), хорошо бы перейти на Delphi 2009.

...