AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Arbeiten mit Nan

Ein Thema von v2afrank · begonnen am 8. Jan 2021 · letzter Beitrag vom 11. Jan 2021
 
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
575 Beiträge
 
Delphi XE2 Professional
 
#1

Arbeiten mit Nan

  Alt 8. Jan 2021, 15:21
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 ?
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz