Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   EAccessViolation beim Beenden sporadisch (https://www.delphipraxis.net/157075-eaccessviolation-beim-beenden-sporadisch.html)

zeras 28. Dez 2010 12:12

EAccessViolation beim Beenden sporadisch
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich programmiere eine Anwendung mit einer DB und nutze dazu Firebird embedded. Nun kommt es hin und wieder vor, dass EAccessViolation kommt (im Anhang die Message). Es kommt nicht immer, aber ab und zu. Kann ich mit Hilfe der Meldung im Quelltext weitersuchen, wo die Ursache herkommen könnte? Ich habe schon in der DP gesucht, aber nur was von falscher Reihenfolge oder ähnlichen gefunden. Meine DB öffne ich erst im Activate. Muss ich diese dann auch von Hand schließen oder geht das von alleine beim Schließen der Anwendung? Vielleicht sind das die Ursachen?

s.h.a.r.k 28. Dez 2010 12:15

AW: EAccessViolation beim Beenden sporadisch
 
Das Problem ist wahrscheinlich, dass beim Beenden auf ein Objekt zugegriffen wird, welches schon freigegeben wurde. Wobei es dabei etwas verwunderlich ist, dass es nur sporadisch auftritt. Somit wird das Programm in verschiedenen Zuständen beendet.

Aber ohne nähere Informationen kann dir so direkt nicht geholfen werden.

Compilier mal madExcept mit ein. Damit kannst du dir die Unit und die Zeile anzeigen, in der die Exception auftritt.

zeras 28. Dez 2010 12:37

AW: EAccessViolation beim Beenden sporadisch
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1070775)
Das Problem ist wahrscheinlich, dass beim Beenden auf ein Objekt zugegriffen wird, welches schon freigegeben wurde. Wobei es dabei etwas verwunderlich ist, dass es nur sporadisch auftritt. Somit wird das Programm in verschiedenen Zuständen beendet.

Ja möglicherweise. Vielleicht wurde auch ein Datensatz noch nicht gespeichert oder so. Ich bin noch am Entwickeln und habe solche Fälle, wo noch nicht abgespeichert wurde, noch nicht bedacht.

s.h.a.r.k 28. Dez 2010 14:18

AW: EAccessViolation beim Beenden sporadisch
 
Naja, das oder so hilft uns trotzdem nicht weiter ;) Du musst uns schon ein wenig mehr geben, sonst können wir nur in die Glaskugel schauen und raten. Wie schon gesagt, madExcept wäre ein erster Anlaufpunkt für dich.

Bernhard Geyer 28. Dez 2010 15:13

AW: EAccessViolation beim Beenden sporadisch
 
Was passiert wenn im OnCloseQuery-Event des Hauptformulars explizit die DB-Verbindung geschlossen wird. Hatte schon das (früher) die BDE im Disconnect Screen.Curser gesetzt hat. Schlecht wenn da schon die Screen-Instanz schon freigegeben wurde.

zeras 28. Dez 2010 15:38

AW: EAccessViolation beim Beenden sporadisch
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1070804)
Was passiert wenn im OnCloseQuery-Event des Hauptformulars explizit die DB-Verbindung geschlossen wird.

Nun habe ich noch folgendes in OnCloseQuery eingebaut.
Delphi-Quellcode:
 //wenn noch verbunden, dann Verbindung lösen
  with DM1 do begin
    if IBDatabase1.Connected then begin
      IBDatabase1.Connected:=False;
    end;
  end;
Dabei ist mir aufgefallen, dass ich noch einen Timer nutze, der mir die Anzahl der Datensätze ausliest und in die Statusbar einträgt. Vielleicht ist das auch das Problem. Wie kann ich ansonsten die Anzahl der Datensätze in eine Statusbar eintragen, wenn nicht mit dem Timer?

DeddyH 28. Dez 2010 18:19

AW: EAccessViolation beim Beenden sporadisch
 
Wie wäre es nach der Abfrage der Daten?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:39 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