Einzelnen Beitrag anzeigen

HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#6

AW: Utf16String mit AnsiCodes nach Utf16String mit UTF16Codes konvertieren

  Alt 28. Aug 2020, 14:23
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
  Mit Zitat antworten Zitat