![]() |
Fehler nachdem die Software beendet wird
Hallo Leute,
einen schönen Gruß aus dem sonnigen Salzburger Land. Frage: Wie kann ich den folgenden Fehler finden oder zumindest eingrenzen, wo der Fehler sein könnte? Fehler: Ich hab ein Problem beim Schließen meiner Anwendung. Ab und zu kommt es vor dass ein ApplicationError "Exception EAccessViolation in Modul "Programmname.exe"" aufpoppt und ich finde den Fehler einfach nicht. Wann der Fehler auftritt ist nicht klar definierbar - kommt rein Zufällig daher - aber immer erst NACH dem schließen der Software. Fehler kommt sporadisch Fehler kommt bei WinXP bis Win7 gleichermassen selten - aber kommt. Wenn die Software über die DelphiIDE gestartet wird und eine Fehlermeldung kommt (wenn Programm beendet wird) - ist Delphi bereits "fertig" und zeigt mir keine Quelltextposition, wo der Fehler sein könnte Die Software verwendet: Fenster - werden m.M.n. alle free gesetzt DLL - werden alle via CloseLibrary entladen Firebird SQL - Zeos 6.6.6 Connection closed Timer: werden alle bei OnCloseQuery des Maiforms disabled Reportdesigner wüsst ich nicht was da sein könnte einen Schriftfont: Calibri wird beim Programmstart geladen ... Wie könnte ich diesen Fehler eingrenzen? Vielen Dank für Hinweise Erich |
AW: Fehler nachdem die Software beendet wird
Es wird wohl irgendwas vorher freigegeben, bevor es nochmals verwendet wird. Aber wo genau, das wird schwer dir zu sagen.
Verwendest du Threads beim Herunterfahren? Oder rufst du nur bedingt Free() auf? also so:
Delphi-Quellcode:
procedure TMyClass.Destroy();
begin if ... then ObjectXYZ.Free(); end; |
AW: Fehler nachdem die Software beendet wird
Ich rufe "Free" auf. Wenn da ein grundlegender Fehler wäre, würde der aber immer kommen .. und nicht sporadisch.
|
AW: Fehler nachdem die Software beendet wird
Zitat:
Kannst ja mal zum Spass auch alle Timer deaktivieren. Solche Komponenten haben gerne etwas mit sporadisch auftretenden Fehler zu tun. |
AW: Fehler nachdem die Software beendet wird
Habe die Erfahrung gemacht das man DB-Verbindungen (bei mir BDE) frühzeitig beenden sollte (OnCloseQuery) damit es nicht zu sporatischen Exception kommts (bei mir wars zugriff auf Screen.Curser nachdem die Screen-Instanz schon freigegeben war).
|
AW: Fehler nachdem die Software beendet wird
Wie wäre es mit dyn. globalen Variablen?
Z.B. eine Stringlist, die irgendwo in der Unit initialisiert wird und dann eben nicht immer bis zum Finalization durchhält. Gruß K-H |
AW: Fehler nachdem die Software beendet wird
FastMM hilft, insbesondere falls da Objekte benutzt werden sollten, die schon freigegeben wurden. Denn das knallt ohne Prüfung eben nicht immer, würde also auch zu deiner Beschreibung passen.
Ansonsten wären die üblichen Helferlein madExcept, ... |
AW: Fehler nachdem die Software beendet wird
Diese Fehler sind sehr sehr nervig. Das letzte mal lag es bei mir daran das ich eine DLL-Funktion in der Aufruf-Methodik als stdcall angegeben hatte, in der dll selbst war die einsprungsfunktion aber als safecall (also der default wert, ich hatte die angabe vergessen) definiert. Beim Programm beenden und entladen der DLL knallte es dann und die Anwendung blieb im Hintergrund hängen.
Prüfe das mal vielleicht liegt es wirklich daran- ich kann es nicht zu 100% sagen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 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