On 24.06.2013 11:36, Michael Schnell wrote:
On 06/21/2013 07:43 PM, Sven Barth wrote:
Just to clear up the names: UnicodeString is *not* the code page aware
string type (although they share the "metadata" record). It is a
dynamic length 2 byte string. The code page aware string type is
AnsiString.
Thanks for making this clear.
Could you give us a list of the different - legacy and to be supported
- string types we might be seeing including their "official" names to
make the discussion less ambiguous.
ShortString:
255 character, non reference counted, system encoding
String[X]:
same as ShortString with maximum of X characters
AnsiString:
up to 2^23-1 characters, reference counted, system encoding
(determined by the code page at compilation time AFAIK)
AnsiString(X):
same as AnsiString, but with the specified code page (UTF-16 code
pages are not allowed)
RawByteString:
basically AnsiString($ffff) (AFAIK); no code page conversions are
done when a another AnsiString is assigned (UnicodeString is converted
to currently active code page) and the other way round
UnicodeString:
up to 2^23-1 characters, reference counted, UTF-16 encoding
WideString
- on non-Windows: same as UnicodeString
- on Windows: up to 2^23-1 characters (?), non reference counted (but
managed by OS), UTF-16 encoding
String:
- in all modes besides mode delphiunicode or modeswitch
unicodestrings with H-: ShortString
- in all modes besides mode delphiunicode or modeswitch
unicodestrings with H+: AnsiString
- in mode delphiunicode or modeswitch unicodestrings with H+:
UnicodeString
(- don't know whether this is correct: in mode delphiunicode or
modeswitch unicodestrings with H-: ShortString)
Regards,
Sven
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel