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

Reply via email to