我有一个完全支持Unicode的Delphi 2006应用程序。我已经将所有的AnsiStrings替换为WideStrings,将所有的VCL控件替换为TNT控件,并将所有字符串函数从AnsiStrings更改为WideStrings。看起来这些工作都是徒劳的,因为我现在不得不把它全部恢复回去。有没有什么方法可以欺骗Delphi 2009认为WideStrings实际上是UnicodeStrings?
我有一个完全支持Unicode的Delphi 2006应用程序。我已经将所有的AnsiStrings替换为WideStrings,将所有的VCL控件替换为TNT控件,并将所有字符串函数从AnsiStrings更改为WideStrings。看起来这些工作都是徒劳的,因为我现在不得不把它全部恢复回去。有没有什么方法可以欺骗Delphi 2009认为WideStrings实际上是UnicodeStrings?
并没有什么捷径,但如果您真正使应用程序启用了 Unicode 编码,您不会后悔。
TNT 控件可以轻松地替换为常规的 VCL 控件。您可以使用 GExperts (http://www.gexperts.org) 提供的向导自动将一种控件类型替换为另一种类型。
然后,您可以将所有 WideString 声明更改为常规字符串。现在,String 是 UnicodeString 的别名,因此所有字符串都可以很好地保存 Unicode 数据。
顺便提一下,TNT 控件的作者 Troy Wolbrink 现在更喜欢 Delphi 2009 而不是他自己的控件。
我在一个使用不同XML文件作为输入的应用程序中做了相同的事情。 在我的情况下,我在整个程序中都使用UTF-8(因此可以使用常规字符串),仅在显示目的(TNT控件)时转换为WideString。
我删除了WideString和UTF-8之间来回的转换,并手动将TNT控件替换为常规VCL控件,因为只有少数几个表单。
转换需要大约一个小时进行测试。 代码更简单,程序明显更快。