Zitat:
Außerdem liefert mir GetAcp ein Ergebnis von 1252.
Was erwartet man da auch Anderes?
GetACP Retrieves the current Windows
ANSI code page identifier
for the operating system.
Und nicht von deinem Programm/Thread. (GetThreadLocale)
CreateProcess führt nur Programme und Skripte aus.
CHCP ist aber kein Programm, sondern ein "Befehl", den NUR das Konsolenprogramm CMD.exe kennt.
https://technet.microsoft.com/en-us/.../bb490874.aspx
Also mußt due die CMD.exe aufrufen und der sagen, dass sie den Befehl ausführen soll.
GUI-Anwendungen werden von Windows mit der CodePage für
ANSI initialisiert
und Konsolenanwendungen mit der OEM-Codepage,
weswegen du in deiner
VCL-Anwendung (
GUI) natürlich was Anderes bekommst.
Man kann das zwar umschalten,
SetFileApisToOEM SetFileApisToANSI AreFileApisANSI
aber man kann auch einfach nur das Gewünschte benutzen/abfragen.
CP_ACP GetACP
CP_OEMCP GetOEMCP
Und 850 ist die OEM-CodePage. (DOS/Konsole)
https://de.wikipedia.org/wiki/Codepage_850
Delphi-Quellcode:
type
OEMString = type AnsiString(CP_OEMCP);
var
IchBinOEM: OEMString;
IchBinOEM := 'Hallöle';
WriteLn(IchBinOEM);
Oder du kannst WideCharToMultiByte verwenden und benutzt die OEM-CodePage als Ziel.