我在 2009 年重新编译一些在不同点使用宽字符串的应用程序时遇到了一些奇怪的行为。
在 Delphi 2009 应用程序中,Widestring 与 String 相同吗?
最佳答案
不,它们并不相同。
WideString
只是 ActiveX/COM BSTR
类型的包装器。在 ActiveX/COM 中处理字符串时需要它。
String
是 UnicodeString
的别名,它可以保存 Unicode 字符,就像 BSTR
一样,但它不是与 WideString
相同。 WideString
由 COM 内存管理器分配,并且不进行引用计数。 UnicodeString
由 RTL 内存管理器分配,并进行引用计数,就像 AnsiString
一样。
您应尽可能使用 (Unicode)String
,并且仅将 WideString
用于 COM 互操作,或处理使用 WideString
的旧库用于 Unicode 支持。
关于delphi - WideString 与 Delphi 2009 中的 String 相同吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/374446/