Ja, bei mir enthält die Output StringList wie erwartet den Text "Aktive Codepage: 850.".
Bei mir leider nicht. Außerdem liefert mir
GetAcp
ein Ergebnis von 1252.
Ich habe mit dem Problem schon zu viel Zeit verbracht...
Ganz blöde Geschichte, die mir ein Vorgänger hinterlassen hat:
Die Intention war mit einem TWriter Objekt X Bytes eines Records zu schreiben.
Anstatt das mit einem Pointer und der Funktion
procedure Write(const Buf; Count: Longint);
zu erledigen wurde es in einer Schleife mit
procedure WriteChar(Value: Char);
gemacht (Adresse als PChar casten und in der Schleife einen Char schreiben und den Pointer inkrementieren).
Aus dem Char wird intern entweder ein AnsiString (vor Delphi 2009) oder ein UTF8String. Das zweitere ist aber abhängig von der derzeitigen Codepage und damit für verschiedene Regioneneinstellungen unterschiedlich.
Ich kann die Warnung von MS nur voll unterstützen:
Note The ANSI code pages can be different on different computers, or can be changed for a single computer, leading to data corruption. For the most consistent results, applications should use Unicode, such as UTF-8 or UTF-16, instead of a specific code page, unless legacy standards or data formats prevent the use of Unicode