Alle "PChar" durch "PAnsiChar" und alle "String" durch AnsiString" ersetzen:
Delphi-Quellcode:
function Base16ToStr(Value: PAnsiChar; Len: Integer): AnsiString;
var
D: PByte;
V: Byte;
S: PAnsiChar;
begin
{...usw.}
Edit: Das geht natürlich auch übersichtlicher.
Delphi-Quellcode:
function HexValue(AValue: AnsiChar): Byte;
begin
case AValue
of
'
0'..'
9': Result := Ord(AValue) - Ord('
0');
'
A'..'
F': Result := Ord(AValue) - Ord('
A') + 10;
'
a'..'
f': Result := Ord(AValue) - Ord('
a') + 10;
else
raise Exception.Create('
ungültiges Zeichen');
end;
end;
function Base16ToStr(Value: PAnsiChar; Len: Integer): AnsiString;
var
v: Byte;
i: Integer;
begin
Result := '
';
if Value =
nil then
Exit;
if Len < 0
then Len := StrLen(Value);
if Odd(Len)
then
raise Exception.Create('
ungerade Anzahl für halbe Byte');
SetLength(Result, Len
div 2);
for i := 1
to Length(Result)
do
begin
v := HexValue(Value^)
shl 4;
Inc(Value);
v := v
or HexValue(Value^);
Inc(Value);
Result[i] := AnsiChar(v);
end;
end;