AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
Zitat:
MadExcept wurde ja schon vorgeschlagen. Das musst du im Grunde nur einbinden, damit du einen guten Fehlerbericht mit Stacktrace bekommst. Alle anderen Logging-Maßnahmen sind für den aktuellen Zweck viel aufwendiger, wenn man sie nicht von Anfang an vorgesehen hat. |
AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
Tipp: Probehalber auch mal vorübergehend die Codeoptimierung abschalten, wenn irgendwas knallt und man nicht weiß woher. (falls du als "Debug" kompilierst und es dort aktiviert wurde)
Wenn es zuverlässig dort auftritt, dann mal via RemoteDebugging nachsehn (falls nicht vorhanden, kann man auch z.B. via TeamViewer ein VPN verwenden, um sich mit seinem Delphi mit dem Programm zu verbinden), oder eine bessere Fehlerauswertung einbauen (Eurekalog, MadExcept oder so). |
AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
Hallo!
Ich möchte noch anmerken, dass StrToInt nicht nur Zahlen im Dezimalformat erkennt, sondern bspw. auch Hex-Zahlen, also z.B. $fe oder 0xff. D.h. dann wird beim StrToInt() keine Exception ausgelöst... aber vielleicht später im Code? Gruß, Meik |
AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
Das allererste Ziel muss sein, die exakte Zeile zu finden, wo der Fehler auftritt. Dazu kannst du zB vor jede Zeile in der vermuteten Umgebung eine Logging Ausgabe (siehe andere Posts dazu) einbauen. Bzw beim Eintritt und Austritt aus Methoden, dann hast billig den Aufrufbaum.
Ich hatte das mit dem FPU Control Word auch mnal, da war es ein Druckertreiber, der das geändert, aber nicht zurückgesetzt hat. Je nachdem, ob wer was gedruckt hatte oder nicht, kam der Fehler (bzw in dem fall kam eben KEINE Exception, obwohl erwartet). Zweites Ziel muss sein, zu klkären, ob du das verlässlich reproduzieren kannst. Anhand von daten bzw anhand von Abfolgen. Und zwar in allen Kombinationen - Fehler ja/nein vs Rechner A und B. |
AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
Ich wette der Fehler kommt aus Firebird.
Firebird liefert z.b. "ungültige Gleitkomma Operation", wenn man Strings einfügt die Länger als das Feld sind. Deswegen jede Zeile loggen damit man weiß wo der Fehler passiert. |
AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
Es ist ja bekannt in welcher Procedure der Fehler auftritt!
Es ist nur noch nicht nachvollziehbar, warum diese Produdure den Fehler NUR bei einigen PC's auslöst, bei anderen nicht! MadExcept 5 habe ich mal installiert, bringt mich auf dem Entwicklungsrechner auch nicht weiter, da keine Exception dort ausgelöst wird. |
AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
Zitat:
Gedacht ist das Tool dafür, dass du die damit kompilierte Exe auf dem PC ausführst, auf dem der Fehler auftritt. |
AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
Du musst die Exe die damit kompiliert wurde schon deinem Kunden geben.
Falls Du noch nie mit MadExcept gearbeitet hast, solltest du mal selber bei dir zum Testen eine Exception auslösen, um zu sehen wie der Dialog aussieht und was der Kunde machen muss damit Du an den Report kommst. Mit dem Report wird dir schnell ein Licht aufgehen. Und, sei bitte so lieb dem Erfinder von MadExcept deine Dankbarkeit zu zeigen, falls das noch nicht erfolgt ist. |
AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
Zitat:
Du wärest bestimmt nicht der Erste, der sowas übersieht und verzweifelt an der falschen Stelle sucht. |
AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
Guten Morgen, liebe Leute
nun sieht es so aus, dass ich den Verursacher der Fehlermeldung gefunden habe:
Delphi-Quellcode:
frm_Main.edt_Marge.Text:= Format('%3f',[DataMod.Q_sArtikelmarge1.AsFloat/DataMod.Q_sArtikelArtEKQuer.AsFloat*100]);
Dies war im OnDataChange Ereignis im Datenmodul. Wenn der Datensatz gewechselt wurde sollte die Marge neu berechnet werden. Dieser Wechsel findet auch statt, wenn ein Produkt gesucht wird - aber nichts gefunden wurde. Wie im beschriebenen Fall. Da wurde trotzdem versucht die Marge zu berechnen obwohl kein EKPreis vorhanden. Das wäre nun dank Euerer intensiven Hilfe geklärt. Ich habe aber tatsächlich immer an der falschen Stelle gesucht. VIELEN HERZLICHEN DANK.:-D Warum die Exception aber nur auf manchen Rechnern ausgelöst wurde, bleibt aber weiterhin ungeklärt :( LG Harry |
AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
Da lag ich mit dem IsZero aus der ersten Antwort ja gar nicht so falsch, nur dass die Prüfung nicht falsch, sondern nicht vorhanden war.
Zitat:
|
AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
> Das kann durchaus am FPU control word liegen. <
Was bedeutet das?? Liegt es an der Hardware oder Windows Einstellungen auf den Rechnern wo es nicht läuft bzw. dass es der Fehler nicht auftritt? |
AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
https://docwiki.embarcadero.com/Libr...stem.Set8087CW
das Ding ist recht global. Und wenn jemand anders das anders setzt als man es haben will ... |
AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
Zitat:
Ich stecke gerade nicht so tief drin, was AsFloat bei einer leeren Datenmenge macht, aber man muss dort zumindest mit einer Division durch "0" rechnen. Ungültige Gleitkommaoperationen kann ich mir dabei durchaus auch vorstellen. Mit der FPU muss das nicht zwingend etwas zu tun haben. |
AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
Also wenn ich das mit FPU {delphi] System.Set8087CW($133f);[/delphi] einsetze, dann wird auch auf den besagten Rechnern keine Exception ausgelöst.
Das Programm läuft dann auf allen PC's ohne Fehlermeldung. Es sollte ja richtigerweise aber auf ALLEN eine Exception ausgelöst werden. Wieder bleibt das Problem: Warum laufen drei Rechner ohne die Exception und zwei mit?? |
AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
Wenn kein Datensatz vorhanden ist oder die Query auf EOF steht, sind die Felder NULL.
AsFloat macht daraus 0. Division durch 0 ist eine ungültige Gleitkommaoperation. Warum der Fehler nicht auf dem Entwicklungsrechner auftritt kann alle möglichen Ursachen haben. Versuch einfach den Fehler bewust in Q_sArtikelArtEKQuer hervorzurufen (Last; Next; -> EOF). |
AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
Zitat:
Set8087CW / Reset8087CW Sample |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 Uhr. |
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