Also, erstmal vorneweg: Ich würde auch lieber
Unicode verwenden und auf irgendwelche OEM-Codierungen verzichten, aber das betroffene Programm lebt seit TurboPascal-Zeiten und ist halt gewachsen.
Nun wollen unsere Kunden in Lettland (die russische Betriebssysteme benutzen) einige Strings, die aus OEM-codierten Dateien kommen, auf Lettisch gedruckt haben. Ich löse das jetzt testhalber so (in der Kurzfassung):
Delphi-Quellcode:
MultiByteToWideChar(775, ...); // 775 = OEM-Codepage baltisch
WideCharToMultiByte(1257, ...); // 1257 = Windows-Codepage baltisch
Printer.Charset := 186 // baltisches Charset
Writeln(Lst, ...);
Das funktioniert auch. Bevor ich das jetzt fest in die Anwendung einbaue und entsprechende Konfigurationsmöglichkeiten schaffe, wollte ich aber mal fragen, ob das irgendwie eleganter geht. Z.B., ob das Betriebssystem irgendeinen Zusammenhang zwischen den drei Konstanten 775/1257/186 kennt, ob ich die beiden ersten Schritte zu einem Analogon von OemToChar mit einem Extra-Parameter zusammenfassen kann (ohne Umweg über einen temporären WideString), etc.pp.
Vielen Dank im Voraus für die zahlreichen Kommentare!
Uli.