AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein EAccessViolation beim Beenden sporadisch
Thema durchsuchen
Ansicht
Themen-Optionen

EAccessViolation beim Beenden sporadisch

Ein Thema von zeras · begonnen am 28. Dez 2010 · letzter Beitrag vom 28. Dez 2010
Antwort Antwort
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#1

EAccessViolation beim Beenden sporadisch

  Alt 28. Dez 2010, 13:12
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?
Miniaturansicht angehängter Grafiken
eaccessviolation.jpg  
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

AW: EAccessViolation beim Beenden sporadisch

  Alt 28. Dez 2010, 13:15
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.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#3

AW: EAccessViolation beim Beenden sporadisch

  Alt 28. Dez 2010, 13:37
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.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

AW: EAccessViolation beim Beenden sporadisch

  Alt 28. Dez 2010, 15:18
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.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: EAccessViolation beim Beenden sporadisch

  Alt 28. Dez 2010, 16:13
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#6

AW: EAccessViolation beim Beenden sporadisch

  Alt 28. Dez 2010, 16:38
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?
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#7

AW: EAccessViolation beim Beenden sporadisch

  Alt 28. Dez 2010, 19:19
Wie wäre es nach der Abfrage der Daten?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 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