![]() |
Ungültige Gleitkommaoperaion trotz Try Except Block
Liste der Anhänge anzeigen (Anzahl: 1)
Hey Leute, ich steh vor einem Rätsel.
Ich erhalte in meinem Programm eine Exception (ungültige Gleitkommaoperation) obwohl ich den Anweisung, die diese Exception auswirft in einem try..except Block steht. "Bei Sprach-Exceptions benachrichtigen ist schon ausgeschaltet". Auch wenn ich das Programm nicht aus der exe starte kommt die Exception. Dann habe ich zusätzlich MadExcept eingeschaltet, welches ebenfalls trotz try..except anschlägt. Ich habe mal den Screenshot von MadExcept angehängt. Die genaue Zeile in der die Exception ausgeworfen wird, ist ein Aufruf von Chart.Repaint der TeeChart Komponente. Ich hoffe ihr könnt mir helfen, ich komme an dieser Stelle einfach nicht weiter. |
Re: Ungültige Gleitkommaoperaion trotz Try Except Block
Hallo Oracle,
zeige doch bitte mal den Code einschließlich des try except Blocks und der Repaint Anweisung. |
Re: Ungültige Gleitkommaoperaion trotz Try Except Block
Hier der Ausschnitt an dem das Problem auftritt. Das ganze Programm hat mehrere 10000 Zeilen, so dass ich nicht weiss was ich daraus alles extrahieren soll, um den Fehler besser auffindbar zu machen.
Delphi-Quellcode:
if length(XValues) > 0 then
begin try Chart.Series[0].XValues.Value := TChartValues(XValues); Chart.Series[0].XValues.Count := high(XValues); Chart.Series[0].XValues.Modified := true; Chart.Series[0].YValues.Value := TChartValues(YValues); Chart.Series[0].YValues.Count := high(YValues); Chart.Series[0].YValues.Modified := true; Chart.Repaint; <-- Hier tritt der besagt Fehler auf. except end; |
Re: Ungültige Gleitkommaoperaion trotz Try Except Block
Hi,
ich bin mir jetzt nicht ganz sicher, aber ich glaube, dass kommt daher: Ruft eine Methode in einem try/except-Block eine Methode auf, die ihren eigenen Code nicht mittels try/except kapselt, und eine Exception verursacht, so wird diese auch geworfen. Bsp.:
Delphi-Quellcode:
In diesem Beispiel wird glaub ich eine Exception geworfen. Das entspricht deinem Aufruf Repaint. Ich bin mir nur nicht mehr sicher ob das generell so ist oder nur, wenn die aufgerufenen, Exception werfende Methode in einer anderen Unit liegt, die nur noch als dcu dazugelinkt wird.
procedure DoIt;
begin 1000/0; end; procedure TryDoIt; begin try DoIt; except end; end; Gruß Oki |
Re: Ungültige Gleitkommaoperaion trotz Try Except Block
Hallo Oki,
eine Exception wird, wenn Sie in einer Methode nicht abgefangen wird, an den Rufer weitergeleitet. Das dürfte also nicht die Ursache sein. |
Re: Ungültige Gleitkommaoperaion trotz Try Except Block
Hmm :gruebel: wenn du das sagst, dann glaube ich das auch. Ich kann mich aber duster daran erinnern, dass ich so was auch mal hatte (vor langer Zeit). Kann mich aber nicht mehr genau erinnern was da los war. War aber noch zu D5-Zeiten.
Naja, vielleicht kennt ja noch jemand anderes das Problem und hat eine aktuelle Lösung parat. Und du bist dir sicher, dass es auch nicht mit einer gelinkten dcu ohne try-Block zu tun haben kann? Gruß oki [edit = das gröbste Deutsch korrigiert] |
Re: Ungültige Gleitkommaoperaion trotz Try Except Block
Hallo,
was passiert, wenn du folgendes machst
Delphi-Quellcode:
Und dann immer eine Zeile mehr reinbringen
if length(XValues) > 0 then
begin try (* Chart.Series[0].XValues.Value := TChartValues(XValues); Chart.Series[0].XValues.Count := high(XValues); Chart.Series[0].XValues.Modified := true; Chart.Series[0].YValues.Value := TChartValues(YValues); Chart.Series[0].YValues.Count := high(YValues); Chart.Series[0].YValues.Modified := true; *) Chart.Repaint; <-- Hier tritt der besagt Fehler auf. except end; Es könnte aber auch daran liegen, dass Repaint nicht benutzt werden darf (gibt es Invalidate ?) Ausserdem rpüfst du zwar length(XValues), arbeitest aber auch mit YValues. Ich würde mal prüfen, ob die Werte gültig sind. Heiko |
Re: Ungültige Gleitkommaoperaion trotz Try Except Block
Was ich noch dazu schreiben sollte ist:
Normalerweise funktioniert der Code reibungslos. Und das schon seit langem. Ich habe hier eine Software mit der ich Geräte anspreche und auslese. Neu ist jetzt: Bisher gab es für unsere verschiedenen Gerätetypen immer eine eigenen Software. Da sich die einzelnen Softwaren (?) untereinander fast komplett gleichten, führe ich jetzt eine Verschlankungskur durch. Nun soll es nur noch eine Software für alle Geräte geben. Das Problem tritt nun an der Stelle auf, wenn ich während die Software läuft das Gerät welches aktuell verwendet wird geändert wird. Beispiel: Software wird mit Gerätetyp 1 gestartet. Während die Software läuft soll die Software auf Gerät 2 überschwenken. Quasi: Gerät 1 deinitialisieren und Gerät 2 initialisieren. Danach Softwareoberfläche entsprechend den Geräteparametern anpassen |
Re: Ungültige Gleitkommaoperaion trotz Try Except Block
@hoika
es gibt übrigens auch Chart.Invalidate. Was bedeutet das für mich? Darf ich chart.repaint dann nicht aufrufen? |
Re: Ungültige Gleitkommaoperaion trotz Try Except Block
auch wenn man invalidate benutzt und danach alles reibungslos funzt erklärt das noch nicht die Exception im Block. Somit sollte das nach
Zitat:
Gruß oki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:21 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