![]() |
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? |
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) |
AW: Problem "ungültige Gleitkomma-Opertion"
erster Verdächtiger Division durch 0 ?
|
AW: Problem "ungültige Gleitkomma-Opertion"
|
AW: Problem "ungültige Gleitkomma-Opertion"
Zitat:
|
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. |
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.
|
AW: Problem "ungültige Gleitkomma-Opertion"
Zitat:
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:
innerhalb des except-Parts.
raise;
|
AW: Problem "ungültige Gleitkomma-Opertion"
Wozu erfolgt denn die Umwandlung in einem try..except Block?
![]()
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!' ); |
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 05:51 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-2025 by Thomas Breitkreuz