Absturz bei zu vielen Exceptions

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.

Absturz bei zu vielen Exceptions

Beitragvon MmVisual » 31. Okt 2008, 22:04 Absturz bei zu vielen Exceptions

Ich habe eine Applikation mit Datenbank und ZeosDBO Komponente TZQuery.

Bei jedem Float-Datenbankfeld, das im Grid dargestellt wird, das NULL enthält, kommt eine Exception.
Das ist halt so in der TZQuery / Wandlung Float-Wert als darzustellende Zahl.

Weil das für mich lästig ist habe ich im Lazarus Menü:
Einstellungen >> Lazarus Optionen ... >> Sprach-Exceptions >> "Diese Exception Ignorieren"
die Exception "EConvertError"
mit aufgenommen.

Nun zappelt jedesmal bei dieser Exception Lazarus kurz in den Vordergrund, nacher kommt wieder beim Debuggen die Applikation.

So weit so gut.

Nun habe ich in der Datenbank viele Datensätze (ca. 500 Zeilen mit NULL Wert im Float Feld), dann zappelt das ganze etwas länger, zum Schluss wird meine Applikation nicht mehr dargestellt und nichts mehr (Lazarus / Applikation) lässt sich bedienen.
Lösche ich Datensätze, dann geht das Debuggen wieder.
Die Kompillierte Version (Strg+F9) funktioniert ohne Probleme.

Lazarus V0.9.26 / WinXP

Wo finde ich die Float-Text Konvertierung, damit ich die Exception abstellen kann? Dann könnte ich auch Debuggen und Lazarus würde sich nicht "Aufhängen".
MmVisual
 
Beiträge: 1109
Registriert: 10. Okt 2008, 22:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon af0815 » 12. Jan 2009, 09:20 Re: Absturz bei zu vielen Exceptions

MmVisual hat geschrieben:Bei jedem Float-Datenbankfeld, das im Grid dargestellt wird, das NULL enthält, kommt eine Exception.
Das ist halt so in der TZQuery / Wandlung Float-Wert als darzustellende Zahl.

Brauchst du unbedingt das NULL, in der DB ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3939
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon MmVisual » 12. Jan 2009, 11:13 Re: Absturz bei zu vielen Exceptions

Würde ich ja machen, aber geht nicht, da es den Datensatz, der angezeigt wird gar nicht gibt.

Also hier der SQL-Befehl:

qParam.SQL.Add('SELECT P.*,');
qParam.SQL.Add('T.ID AS TID, T.NR AS TNR,');
qParam.SQL.Add('T.CANID, T.Gruppe_ID, T.Bezeichnung AS TBez,');
qParam.SQL.Add('D.ID AS DID, D.NR AS DNR, D.Ebene_ID,');
qParam.SQL.Add('D.Bezeichnung AS DBez, D.Datentyp,');
qParam.SQL.Add('D.MaxVal, D.MinVal, D.DefVal, D.Einheit,');
qParam.SQL.Add('D.DezStellen, D.ReadOnly');
qParam.SQL.Add('FROM paramdef D');
qParam.SQL.Add('JOIN tracker T');
qParam.SQL.Add('LEFT JOIN param P ON ( T.ID = P.TRACKER_ID');
qParam.SQL.Add('AND D.ID = P.PARAMDEF_ID )');

Beschreibung:
- Es gibt eine Tabelle mit der Parameter Vorlage (paramdef)
- Es gibt eine Tabelle mit den Geräten (tracker)
- der eigentliche Parameter stecht in Param
Somit hat die Anlage paramdef * tracker Parameter (= 100 * 300 = 30000 !!!)
Das ist ja Wahnsinn, also so viele Parameter kann niemand ordentlich verwalten.
Also steht in der param Tabelle kein einziger Datensatz erst mal drin. Dafür aber in der paramdef die Defaultwerte für die 100 Parameter, der jeweils erstmal für die 300 Geräte gleich ist.
Somit werden 30000 Parameter zwar angezeigt, aber alle mit Wert NULL (im OnGetText-Event des Datenbankfeldes wird hier anstatt NULL der Defaultwert ausgegeben).
Erst wenn jemand auf die Idee kommen sollte ein Parameter zu ändern, wird dieser in der param Tabelle angelegt.

Somit ist automatisch bei allen Parametereinträgen das Ergebnis der Datenbankabfrage = NULL, solange der Parameter nicht von Hand geändert wurde. Natürlich kann die Parameter-Eintragung auch gelöscht werden, dann ist automatisch wieder der Default-Wert aktiv.

Im Grunde eine geniale Sache, wenn da nur nicht das Problem mit den Exceptions wäre...

Vielen Dank für eure Unterstützung.
MmVisual
 
Beiträge: 1109
Registriert: 10. Okt 2008, 22:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon MmVisual » 13. Jan 2009, 17:00 Re: Absturz bei zu vielen Exceptions

Mit Lazarus V0.9.27 (Stand 13.01.09) Stürzt zwar Lazarus nicht komplett ab, also verschwindet nicht mehr aus dem Speichert, aber dafür Hängt die gesammte Applikation für mehrere Minuten.
Danach scheint es zu funktioneren. Ist es möglich das GDB Handling für deaktivierte Fehlermeldungen zu beschleunigen?
Vielen Dank, Lazarus wird immer besser :)
MmVisual
 
Beiträge: 1109
Registriert: 10. Okt 2008, 22:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3) | 
CPU-Target: 32/64Bit
Nach oben

• Themenende •

Zurück zu Lazarus - Bugs



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried