Registriert seit: 10. Apr 2006
Ort: Leverkusen
972 Beiträge
Delphi 6 Professional
|
AW: String Konvertierung
26. Feb 2018, 18:40
Hmm..
[QUOTE=himitsu;1394623]
Und das ANSI/ Unicode ist hier vollkommen egal, denn das PChar ist im Eingang und nicht im Ausgang, also der hexadezimale String (quelle) ist ANSI und das passt genau zu allen Text-Ladefunktionen des jeweiligen Delphi ( ANSI und Unicode).
Unter D6 sieht HexToBin so aus :
Delphi-Quellcode:
function HexToBin(Text, Buffer: PChar; BufSize: Integer): Integer; assembler;
const
Convert: array[' 0'..' f'] of SmallInt =
( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1,
-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,10,11,12,13,14,15);
var
I: Integer;
begin
I := BufSize;
while I > 0 do
begin
if not (Text[0] in [' 0'..' f']) or not (Text[1] in [' 0'..' f']) then Break;
Buffer[0] := Char((Convert[Text[0]] shl 4) + Convert[Text[1]]);
Inc(Buffer);
Inc(Text, 2);
Dec(I);
end;
Result := BufSize - I;
end;[DELPHI]
[/DELPHI]
Hier ist Buffer ein PChar und in diesen wird ein Char 'geschrieben', somit Out....
das 'S := '0056006F007200730063006800610075';' würde unter D6 nicht funktionieren, da hier nur Kleinbuchstaben zulässig sind, jedoch im Musterstring diese Großbuchstaben sind..
Wenn dies in einer späteren Delphiversion geändert worden ist, OK.. Ich hab hier im Moment nur in D6.
Unter D6 ist auch TBytes und PChar nicht kompatible..
|