我在2009年得到了一些奇怪的行爲,在2009年重新編譯了一些在各個點使用寬字符的應用程序。WideString與Delphi 2009中的字符串相同
在德爾福2009年的應用程序是Widestring相同的字符串?
我在2009年得到了一些奇怪的行爲,在2009年重新編譯了一些在各個點使用寬字符的應用程序。WideString與Delphi 2009中的字符串相同
在德爾福2009年的應用程序是Widestring相同的字符串?
不,他們不是認同的。
WideString
只是ActiveX/COM BSTR
類型的包裝。在使用ActiveX/COM中的字符串時,您需要它。
德爾福2009年String
,後來是UnicodeString
一個別名,可容納Unicode字符,就像BSTR
做,但它是不一樣的WideString
。 WideString
由COM存儲器管理器分配,而不是引用計數。 UnicodeString
由RTL內存管理器分配,並且被引用計數,就像AnsiString
一樣。
只要可能,您應該使用(Unicode)String
,並且只使用WideString
進行COM互操作,或者處理使用WideString
進行Unicode支持的舊版庫。
看來,答案是here:
德爾福2009年最顯着的變化是,「字符串」類型是現在的UnicodeString而不是AnsiString類型的別名。
見本文由Marco坎其中概述了德爾福2009年的字符串(即的UnicodeString)的運作:
「白皮書:德爾福和Unicode」
http://dn.codegear.com/article/38980
基本上,它是羅迪說,但需要27頁詳細。
另一個需要注意的重要事項是性能差異。
在馬可坎圖的白皮書(在moodforaday的答覆中提到)說:
「WideString的是(現在仍然是)沒有引用計數,是非常差的性能和靈活性(比如而言,使用Windows全局內存分配器而不是本地FastMM4)。「
幾乎每一個德爾福2009年的升級指南我見過的建議你將所有的WideStrings轉換爲字符串。