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?
delphidelphi-2009unicode
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?
Best Answer
No, they are not idenitical.
WideString
is just a wrapper for the ActiveX/COMBSTR
type. You need it when working with with strings in ActiveX/COM.String
in Delphi 2009 and later is an alias forUnicodeString
, which can hold Unicode characters, just likeBSTR
does, but it's NOT the same asWideString
.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 likeAnsiString
is.You should use
(Unicode)String
wherever possible, and only useWideString
for COM interop, or dealing with legacy libraries that useWideString
for Unicode support.