[fpc-pascal] String literals and code page of .pas source file

Sven Barth pascaldragon at googlemail.com
Thu Sep 3 22:01:45 CEST 2020


Am 03.09.2020 um 07:19 schrieb LacaK via fpc-pascal:
> Hi *,
>
> I would like to have source file in Windows-1250 encoding, where are 
> stored literal strings like 'áéíóčž' in Windows-1250 encoding (I share 
> this one file between FPC/Lazarus and Delphi 7). Windows-1250 is also 
> ANSI code page of my Windows OS. In source file I have:
>
> {$IFDEF FPC}
>   {$CODEPAGE cp1250}
> {$ENDIF}
A pure string constant will still have CP_ACP as code page (which in 
Lazarus will by default mean UTF-8) also when you declare it as a typed 
String constant. The $CodePage directive will only influence the binary 
encoding of the string. What you need to do is the following:

type
   String1250 = type String(1250);

const
   MyString: String1250 = 'áéíóčž';

This way the string itself will have code page 1250 and if you assign to 
a normal String or a UnicodeString the compiler will insert the 
appropriate conversions.

Regards,
Sven


More information about the fpc-pascal mailing list