Hallo,
ich habe vor Jahren in D6 oder D2007 folgende Function erstellt.
Delphi-Quellcode:
function Base16ToStr(Value: PChar; Len: Integer):
String;
var
D: PByte;
V: Byte;
S: PChar;
begin
Result := '
';
if Value =
nil then Exit;
if Len < 0
then Len := StrLen(Value);
SetLength(Result, (Len +1)
div 2);
D := PByte(Result);
S := PChar(Value);
while Len > 0
do
begin
V := Byte(UpCase(S^));
Inc(S);
if V > Byte('
9')
then D^ := V - Byte('
A') + 10
else D^ := V - Byte('
0');
V := Byte(UpCase(S^));
Inc(S);
D^ := D^
shl 4;
if V > Byte('
9')
then D^ := D^
or (V - Byte('
A') + 10)
else D^ := D^
or (V - Byte('
0'));
Dec(Len, 2);
Inc(D);
end;
SetLength(Result, PChar(D) - PChar(Result));
end;
Nun habe ich versucht Pchar durch PWideChar oder PAnsiChar zu ersetzen. Leider bringt mir die Function eine völlig anderes Ergebnis als unter D2007.
Was muß ich verändern um wieder das Ergebnis wie unter D2007 zu erreichen?
Hat jemand einen Tipp.
Vielen Dank im voraus.