Ich habe hier ein mit Delphi 2006 erstelltes Projenkt. Da bekomme ich über eine Schnittstelle einen Datenstrom und wandle diesen Wert in eine Floatzahl um. Jetzt kam ein Hardwareker darauf mir unter Umständen ein Nan zu senden. Dabei knallt es jetzt bei mir. Ich habe das mal auf folgende Funktion runtergebrochen
Delphi-Quellcode:
function HexAsciiStr2Float(str: Cardinal): Extended;
var
n: Integer;
p: ^byte;
p2: ^byte;
s: single;
begin
s := 0;
p := @s;
p2 := @str;
for n := 1 to 4 do
begin
p^ := p2^;
inc(p, 1);
inc(p2, 1);
end;
result := s;//Hier steht im debugger s='nan'
end;
procedure TForm1.Button1Click(Sender: TObject);
var Nan2:Cardinal;
begin
NaN2:=$FFBFFFFF;
HexAsciiStr2Float(Nan2);
end;
er durchläuft die HexAsciiStr2Float und hat auch in s bzw. in Result NAN drinstehen. Wenn das Programm dann allerdings zu Button1click zurückspringt kommt eine Fehlermeldung illegale Gleitkommaoperation. Warum ? Wie kann ich das abfangen. Laut Hardware gibt es bei Ihnen folgende NANS:
Quiet NANs (+): 7FC00000 - 7FFFFFFF
Quiet NANs (-): FFC00001 - FFFFFFFF
Signalling NANs (+): 7F800001 - 7FBFFFFF
Signalling NANs (-): FF800001 - FFBFFFFF
Da bin ich jetzt echt überfragt. Kann mir jemand helfen ?