Hallo,
mit den vorhergehenden Tipps bin ich zur folgenden Lösung gekommen:
Delphi-Quellcode:
procedure Test;
var
inputString:
string;
outputString:
string;
utf16StringWithAnsiCodes:
string;
bytes: TBytes;
begin
// Test-String bauen
inputString := '
123-456';
bytes := TEncoding.ANSI.GetBytes(inputString +#0);
// +#0 ist notwendig, sonst schneidet er bei ungerader
// Länge ein Zeichen bei der Rückkonvertierung ab
utf16StringWithAnsiCodes := TEncoding.Unicode.GetString(bytes);
// das ist nun der String, den mir eine Komponente zum Lesen von Barcodes
// via COM-Port in einem OnBarcodeReady-Event zur Verfügung stellt
// Rückkonvertierung, dass was ich brauche
bytes := TEncoding.Unicode.GetBytes(utf16StringWithAnsiCodes);
outputString := TEncoding.ANSI.GetString(bytes);
outputString := PChar(outputString);
// um das zuvor angehängte #0 Byte wieder zu entfernen
end;
Ich verwende es als Workarround. Im Endeffekt sollte die BarcodeScanner-Komponente die Daten in der Variable vom Typ string mit dem korrekten Encoding (
Unicode) übergeben.
Ciao HeZa