Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Problem "ungültige Gleitkomma-Opertion" (https://www.delphipraxis.net/160278-problem-ungueltige-gleitkomma-opertion.html)

yogie 5. Mai 2011 15:18

Problem "ungültige Gleitkomma-Opertion"
 
Hallo zusammen,

meine Frage bezieht sich auf einen Fehler „Ungülige Gleitkomma-Operation“; (d.i. Nummer 207 laut Delphi-Hilfe).

Dieser Fehler tritt sporadisch in einem online Meßprogramm auf, zeigt eine (nicht von mir erzeugte) Message und hält das Programm an.

Das Programm empfängt über eine seriellle Schnittstelle einen String mit Daten (Semikolon als Trenner, CR LF als Ende-Zeichen). Der String wird zerlegt und die Teile dann in Float-Variablen gewandelt. Diese Wandlung ist in try excepts eingebettet.

Frage 1 : Gibt es eine Möglichkeit die Anzeige der Message und damit den Programmhalt zu unterbinden? Dann sind zwar die Daten verloren, es geht aber wenigsten weiter.

Frage 2 : Mir gelingt es nicht, durch eine erzwungene Manipulation der hereinkommenden Daten diese Fehlermeldung zu erzwingen. Welcher Umstand erzeugt diese Meldung?

s.h.a.r.k 5. Mai 2011 15:27

AW: Problem "ungültige Gleitkomma-Opertion"
 
Wenn du das Parsen des Strings innerhalb von einem try-except-Block erledigst und auch passend auf den Fehler reagierst, dann sollte das nicht das Problem sein und zum Programmende führen. Der Fehler liegt somit außerhalb dieses try-except-Blocks. Und ab hier kann dir nun keiner mehr helfen, da wir keinen Code sehen.

Was machst du sonst noch mit den Daten? (also außerhalb des try-excepts)

Bummi 5. Mai 2011 15:31

AW: Problem "ungültige Gleitkomma-Opertion"
 
erster Verdächtiger Division durch 0 ?

Aphton 5. Mai 2011 16:24

AW: Problem "ungültige Gleitkomma-Opertion"
 
http://www.youtube.com/watch?v=_N37AEYPCj4

s.h.a.r.k 5. Mai 2011 16:46

AW: Problem "ungültige Gleitkomma-Opertion"
 
Zitat:

Zitat von Aphton (Beitrag 1099120)

Wahrscheinlich nicht all zu einfach den Effekt zu coden, aber richtig witzig war es imho nun nicht :stupid:

yogie 5. Mai 2011 17:41

AW: Problem "ungültige Gleitkomma-Opertion"
 
also erstmal danke für die Antworten.

Die Angelegenheit ist durchaus komplex, verschiedene Typen
von sendenden Geräten, unterschiedliche Anzahl von Daten usw...

Ich vermute ja auch, daß es nicht mit der Wandlung string zu single
zu tun hat.

Mir geht es darum in einem Test erstmal diesen speziellen Fehler in
einem eigenständigen Programm zu erzeugen und dann zu schauen was man
machen kann. Bisher habe ich es nicht geschafft den betreffenden Fehler zu erzeugen.

Weiter suche ich sowas wie einen Compiler-Schalter mit dem man
die Ausgabe der message unterdrücken kann. So in der Art wie man
ja auch die Bereichprüfung abschalten kann.

Luckie 5. Mai 2011 17:46

AW: Problem "ungültige Gleitkomma-Opertion"
 
Wie sieht denn deine Fehlerbehandlung aus? Mit einer richtigen try-except Verwendung sollte man das in den Griff bekommen können.

s.h.a.r.k 5. Mai 2011 17:58

AW: Problem "ungültige Gleitkomma-Opertion"
 
Zitat:

Zitat von yogie (Beitrag 1099149)
Weiter suche ich sowas wie einen Compiler-Schalter mit dem man
die Ausgabe der message unterdrücken kann. So in der Art wie man
ja auch die Bereichprüfung abschalten kann.

Äh? Wozu denn das? Sowas wie "ich will keine Fehler" sehen wäre eher ungeschickt, da es ja ein Problem innerhalb des Programms ist, welches ja behoben werden sollte. Ein "was ich nicht sehe, ist nicht da" wäre hier sehr sehr ungeschickt.

Daher musst du nach der Stelle suchen, an der der Fehler auftritt. Und diese liegt, wie oben schon erwähnt außerhalb deiner bisherigen try-except-Blöcke -- außer du machst ein
Delphi-Quellcode:
raise;
innerhalb des except-Parts.

Sir Rufo 5. Mai 2011 18:45

AW: Problem "ungültige Gleitkomma-Opertion"
 
Wozu erfolgt denn die Umwandlung in einem try..except Block?
Delphi-Referenz durchsuchenTryStrToFloat wäre die bessere Alternative, da die Exception-Behandlung durchaus sparsam eingesetzt werden sollte (schon aufgrund der Performance-Verluste).

Delphi-Quellcode:
ValOk := True;
ValOk := ValOk and TryStrToFloat( S1, V1 );
ValOk := ValOk and TryStrToFloat( S2, V1 );
...
ValOk := ValOk and TryStrToFloat( S9, V9 );

If ValOk then
  try
    // Berechnungen mit den Zahlen durchführen
  except
    ShowMessage( 'Fehler Berechnung: Auch das hier gehört in ein Log!' );
  end
else
  ShowMessage( 'Fehler Import: Man könnte jetzt auch ein Log schreiben!' );

Hawkeye219 5. Mai 2011 19:04

AW: Problem "ungültige Gleitkomma-Opertion"
 
Hallo,

der Fehler tritt auch auf, wenn Gleitkommawerte mittels Trunc oder Round in ganzzahlige Werte (z.B. für die Anzeige in einem Chart) umgewandelt werden und dabei der Integer-Bereich verlassen wird.

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:00 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz