Absturz bei zu vielen Exceptions

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Antworten
MmVisual
Beiträge: 1466
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Absturz bei zu vielen Exceptions

Beitrag von MmVisual »

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".
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Absturz bei zu vielen Exceptions

Beitrag von af0815 »

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).

MmVisual
Beiträge: 1466
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Absturz bei zu vielen Exceptions

Beitrag von MmVisual »

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.
EleLa - Elektronik Lagerverwaltung - www.elela.de

MmVisual
Beiträge: 1466
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Absturz bei zu vielen Exceptions

Beitrag von MmVisual »

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 :)
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten