Ich habe folgendes Problem
Ein String muss in einen Hexstring umgewandelt werden und dieser wieder retour in einen String
Dazu folgender minimaler Codeblock
Delphi-Quellcode:
procedure THeaderFooterForm.Button1Click(Sender: TObject);
var
szInputString : String;
szEncodeString : String;
szDecodeString : String;
iValue : Integer;
begin
szInputString := '€';
// umwandeln zu einen Hexstring
iValue := Trunc(Byte(szInputString[1])); // Result 172 <<- Anmerkung eigentlich ist das auch schon falsch da es eigentlich 128 sein müsste
szEncodeString := IntToHex(iValue, 2); // Result $AC <<- Müsste eigentlich $80 sein
// Rückwandeln der Hexwertes in einen String //
iValue := StrToInt('$' + szEncodeString); // Result 172
szDecodeString := char(iValue); // so? und was soll hier passieren damit wieder € rauskommt???
if (szDecodeString <> szInputString) then begin
// leider unterschiedlich
Beep;
end;
end;
Was mach ich hier falsch???
Das Hauptproblem das ich hier habe ist, das das ganze auch unter Android funktionieren sollte.
Folgendes würde funktionieren ist aber für Android nicht geeignet das es keinen AnsiChar unter Android gibt
Delphi-Quellcode:
procedure THeaderFooterForm.Button1Click(Sender: TObject);
var
szInputString : RawByteString;
szEncodeString : String;
szDecodeString : String;
iValue : Integer;
begin
szInputString := '€';
// umwandeln zu einem Hexstring
iValue := Trunc(Byte(szInputString[1])); // Result 172 <<- Anmerkung eigentlich ist das auch schon falsch da es eigentlich 128 sein müsste
szEncodeString := IntToHex(iValue, 2); // Result AC <<- Müsste eigentlich $80 sein
// Rückwandeln der Hexwertes in einen String //
iValue := StrToInt('$' + szEncodeString); // Result 172
szDecodeString := ansichar(iValue); // Das würde funktionieren ist aber leider nicht praktikabel da es unter Android kein "AnsiChar" gibt
if (szDecodeString <> szInputString) then begin
// leider unterschiedlich
Beep;
end;
end;