Einzelnen Beitrag anzeigen

Photoner

Registriert seit: 6. Dez 2012
Ort: Nürnberg
103 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

AW: Kommando chcp mit CreateProcess ausführen

  Alt 4. Apr 2016, 16:24

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
Chris
  Mit Zitat antworten Zitat