Delphi-Quellcode:
Function INVHEXDW(a:string):int64;
Begin
If a='' then a:='00000000';
while length(a)<8 do
a:='0'+a;
result:= Int64(INVHEXB(a[1]+a[2]))* 16777216 + Int64(INVHEXB(a[3]+a[4])) * 65536 +
INVHEXB(a[5]+a[6])* 256 + INVHEXB(a[7]+a[8]);
end;
INVHEXB gibt bestimmt ein Byte zurück?
Da dein Delphiprogramm 32 Bit ist, wird standardmäíg maximal mit Integer gerechnet, wenn man nix anderes anibt.
zumindest erwarte ich eine ordentliche Fehlermeldung.
Dann Schalte gefälligst mal die Bereichs- und Überlaufprüfungen an, wenn du diese Fehlermeldungen haben willst.
Und die "langsame"/aufwändige Multiplikation würde ich du eine schöne/einfache Bitverschiebung (shl) ersetzen.
PS: Das IF könnte man sich sparen, da das WHILE diesen Fall mit behandelt.
HexToBin oder
StrToInt64 StrToInt64('$0' + a)