Hallo ruedi,
ich vermute, dass eine Umprogrammierung des FPU Control Word Schuld am Verlust der Genauigkeit ist. Ich habe das jetzt nicht nachzustellen versucht, aber ich könnte dir eine unempfindliche Lösung anbieten:
Delphi-Quellcode:
uses
FmtBcd;
function HexToDec(const s: string): string;
var
total, nibble: TBcd;
i: Integer;
begin
total := IntegerToBcd(0);
for i := 1 to Length(s) do
begin
nibble := IntegerToBcd(StrToInt('$' + s[i]));
BcdMultiply(total, 16, total);
BcdAdd(total, nibble, total);
ShowMessage(BcdToStr(total));
end;
Result := BcdToStr(total);
end;
Das soll nur das Prinzip zeigen. Optimierungen sind möglich, aber eventuell unnötig.
Freundliche Grüße