Hallo Michael,
meinen wichtigsten Hinweis hast du einfach überlesen - call by reference ist notwendig, wenn du abschneiden willst. Beachte das
var Schlüsselwort in der Signatur. Die lokalen Zwischenspeicher habe ich eliminiert und die nibble Berechnung als inline code aufgenommen.
Delphi-Quellcode:
const
HEX_DIGITS: string = '123456789ABCDEF0';
procedure myhex2bin(var data; var hex: string; const size: integer);
var
bin: PByte;
i: integer;
begin
bin := @data;
for i := 1 to size do // Length(hex) durch size ersetzt
begin
bin^ := (Pos(hex[Pred(i shl 1)], HEX_DIGITS) mod 16) shl 4
+ (Pos(hex[i shl 1], HEX_DIGITS) mod 16);
Inc(bin);
end;
Delete(hex, 1, size shl 1);
end;
Grüße vom marabu
EDIT: Sorry - die Schleife muss natürlich bei size terminieren.