On 04/16/2016 10:47 AM, Mattias Gaertner wrote:
That's correct. String literals in a codepage other than system are stored as UTF-16 in the binary

(Assuming with "other than system" you mean different from the DefaultSystemcodepage setting the compiler sees at it's runtime).

I see. And of course that will work.

Even though IMHO this is rather hard to understand, as UTF 16 seems to be a rather ineffective coding of constants (for software generally working with UTF-8) regarding as well storage as conversion effort.

Seemingly the compiler assumes that the executable likely at runtime will see DefaultSystemcodepage not equal the {$codepage setting in the source code and abstains form trying to prepare the possible optimization the user might have intended by using {$codepage .

and converted on assign.

By "on assign" you mean "when a constant string is assigned to a string that in it's type has a defined codepage (CP_ACP or any other 7 or 8 bit encoding, or CO_UTF16BE)", but not if it's CP_NONE or CP_UTF16).


The conversion happens at runtime, so the string codepage is decided at runtime.
I'll re-check if I see the convertor working...

-Michael
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to