0

我们必须升级到 XE2(从 Delphi6)。

我收集了很多关于此的信息,但其中一个对我来说并不清楚。

我们正在使用 String - XE 中的 AnsiString 是什么。

据我所知,我们必须替换库中的所有 (P)Ansi[String/Char] 以避免 Unicode 转换的副作用,并且我们可以编译我们的项目。

没关系,但我们也在使用 TStringList,而且我没有找到任何 TAnsiStringList 类来简单地更改它...... ;-)

你对此有什么了解?这也会引起问题吗?或者这个类可以选择保留字符串?

(好吧,貌似是3道题,其实只有1道题)

程序/操作系统语言是匈牙利语,字符集是WIN-1250,有一些奇怪的字符,如Ő和Ű...

感谢您提供的所有信息、链接等。

4

1 回答 1

2

1) 首先 - 为什么你应该使用 AnsiStringList,而不是将你的所有项目都转换为支持 unicode 的 TStringList?这应该有某些详细的原因,以提出可行的替代方案。

Unicode 是 windows-1250、windows-1251 等的超集。通常,所有特定于语言环境的字符串都会无损地转换为 Unicode。IT 正好相反,Unicode 到 AnsiString,转换可能会丢失数据。显式或隐式(如“if char-var in char-set”中的 AnsiChar 缩减)

您可能在 DLL 中具有类型不安全的 API,其中编译器无法检查您是否传递 PChar 或 PAnsiChar,但无论如何您不应该将诸如 TStrings 的对象传递到 DLL,为此有 BPL。

所以你可能只是不需要 TAnsiStringList

2)你可以从绝地代码库中获取 TJclAnsiStringList

3) 您可以使用 XE2 库存TList<AnsiString>类型

于 2012-12-18T11:00:28.030 回答