我有一个在 Delphi 2006 中完全兼容 unicode 的应用程序。我已将所有 AnsiStrings 替换为 WideStrings,将所有 VCL 控件替换为 TNT 控件,并将所有字符串函数从 AnsiStrings 更改为 WideStrings。看起来所有这些工作都是徒劳的,因为我将不得不扭转这一切。有没有办法让 Delphi 2009 认为 Widestrings 实际上是 UnicodeStrings?
3 回答
不,真的没有。但是您不会后悔为真正的 Unicode 启用您的应用程序所做的工作。
TNT 控件可以很容易地替换为常规的 VCL 控件。您可以非常简单地使用 GExperts ( http://www.gexperts.org ) 中的向导来自动将一种控件类型替换为另一种控件类型。
然后,您可以将所有 WideString 声明更改为常规字符串。String 现在是 UnicodeString 的别名,因此您的所有字符串都可以很好地保存 Unicode 数据。
顺便说一句,TNT 控件的作者 Troy Wolbrink 现在比他自己的控件更喜欢 Delphi 2009。
TNT Controls 的主要优点只是它可以在 Windows 9x 中作为 Ansi 程序运行。它不是完整的 unicode。如果您希望在任何地方都获得完整的 unicode 支持(例如 Stringlist.LoadFromFile、Form.OnKeyPress),最好迁移到 Delphi 2009。
我在使用不同 XML 文件作为输入的应用程序中做了同样的事情。就我而言,我在整个程序中使用 UTF-8(因此我们可以使用常规字符串),并且仅转换为 WideString 用于显示目的(TNT 控件)。
我删除了 WideString 和 UTF-8 之间的来回转换,并手动将 TNT 控件替换为常规 VCL 控件,因为只有少数表格。
转换大约需要一个小时进行测试。代码更简单,程序明显更快。