回答问题、使用
添加了新的UnicodeString。为什么不用之前的WideString?WideString实际上是为了方便使用COM而产生的,这就是BSTR。
BSTR没有引用计数,效率很低。UnicodeString是AnsiString的真正unicode版本。
因此,Delphi 2009有三种类型的字符串:AnsiString、WideString和UnicodeString。默认字符串是UnicodeString。
相应的相关类型包括:
安西斯廷-潘西查尔-安西斯廷?(这个可以有...这真的不是,JclAnsiStrings.pas是替代品。)
WideString-PWideChar-TWideStrings(WideString . pas)
unicode string-PWideChar-TStrings(classes . pas)
在实际应用中,一般应该使用UnicodeString。当效率是第一位的时候,AnsiString可以用来处理Ansi文本。而WideString只使用COM的
仅当或为了向后兼容。
与unit相关的几串角色:(D2009有点乱)
斯特拉蒂斯。pas:unicode字符串的处理程序。
分配。pas:ansi string的处理程序。
Widestrutils。pas:widestring的处理程序。
宽弦。pas:twidestringlist的实现。
班级。pas:tstringlist的实现。
JCLANSISTRING。PAS:TJ classing列表的实现。虽然这是第三方库,但不得不提,是谁让CodeGear拒绝添加的?
Delphi 2009的VCL完全使用UnicodeString,完全支持Unicode。TNT Unicode控件终于完成了它光荣的历史使命。
VCL在设计之初不支持Unicode是可以理解的,但是这么多年过去了,在国际化的大潮中依然没有改变,这是一个重大的错误。
等了13年,黄花菜凉了。无论如何,今天的Delphier可以放心地使用Unicode。
关于UTF8String。UTF8String是之前版本的一个答案,没有特殊功能。在Delphi 2009中,
UTF8String才是真正的UTF8。如果一个AnsiString被分配给一个UTF8String,Delphi 2009将自动转换格式为UTF8String。
这比以前方便多了。
关于RawByteString这在某些情况下很有用。如果您有一个接受AnsiString或UTF8String的函数,但您不希望自动转换,
然后就可以重载实现两个函数分别处理AnsiString和UTR8String。另一种选择是使用RawByteString,所以请继续传递。
无论是AnsiString还是UTF8String,RawByteString都会忠实地保持不变,不会进行任何转换。