Thema: Delphi String Konvertierung

Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#13

AW: String Konvertierung

  Alt 26. Feb 2018, 17: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..
  Mit Zitat antworten Zitat