On 11/26/2014 03:05 PM, Sven Barth wrote:


>
> OK. So in Delphi XE (in Germany) String(CP_ACP) is the same as String(CP1252) but different from String without brackets which in turn is the same as String(CP_UTF16) ? Correct ?

There is no "String with brackets". You can only use "AnsiString" followed by brackets, not "String". And "String" in Delphi 2009+ is the same as UnicodeString which is a different compiler internal type than AnsiString(CP_UTF16) would be if it would be allowed.

While both AnsiString and UnicodeString have the current codepage and the character size in their header record the code page is only used for AnsiString and the size can not he influenced in any way (for an AnsiString it's always 1 and for a UnicodeString it's always 2).

OK.
So what is the notation in Delphi (and hence supposedly in FPC with "mode delphiunicode") to define a variable with the (static) string encoding type "CPXXXX" with XXX = 1252, UTF8, UTF16 ?
I found this:
  CP_ACP     = 0;     // default to ANSI code page
  CP_UTF16   = 1200;  // utf-16
  CP_UTF16BE = 1201;  // unicodeFFFE
  CP_UTF7    = 65000; // utf-7
  CP_UTF8    = 65001; // utf-8
  CP_ASCII   = 20127; // us-ascii
  CP_NONE    = $FFFF; // rawbytestring encoding

So seemingly you could do MyStringType = type AnsiString(CP_UTF16), and seemingly the size information is set according to this.

There is no UTF-32 string (at least not in the sense of a compiler provided type).

I see (It's a shame).

Thanks a lot for your patience,
-Michael
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to