Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is WideString identical to String in Delphi 2009

I'm getting some weird behaviour recompiling some applications in 2009 that used widestrings at various points.

In a Delphi 2009 App is Widestring identical to String?

like image 655
Toby Allen Avatar asked Dec 17 '08 12:12

Toby Allen


2 Answers

No, they are not idenitical.

WideString is just a wrapper for the ActiveX/COM BSTR type. You need it when working with with strings in ActiveX/COM.

String in Delphi 2009 and later is an alias for UnicodeString, which can hold Unicode characters, just like BSTR does, but it's NOT the same as WideString. WideString is allocated by the COM memory manager, and is not reference counted. UnicodeString is allocated by the RTL memory manager, and is reference counted, just like AnsiString is.

You should use (Unicode)String wherever possible, and only use WideString for COM interop, or dealing with legacy libraries that use WideString for Unicode support.

like image 53
Roddy Avatar answered Oct 26 '22 22:10

Roddy


It seems the answer is here:

The most dramatic change in Delphi 2009 is that the “string” type is now an alias for UnicodeString instead of AnsiString.

like image 29
haggai_e Avatar answered Oct 26 '22 23:10

haggai_e