Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zugriffsverletzung bei Programmende. (https://www.delphipraxis.net/23234-zugriffsverletzung-bei-programmende.html)

Dani 31. Mai 2004 12:33


Zugriffsverletzung bei Programmende.
 
Hi DPler,

Jedes mal, wenn ich mein Programm beende (d.h. das Hauptformular schließe), kommt es zu dieser Zugriffsverletzung:

---------------------------
Anwendungsfehler
---------------------------
Exception EAccessViolation in Modul Project1.exe bei 0004B874.

Zugriffsverletzung bei Adresse 0044B874 in Modul 'Project1.exe'. Lesen von Adresse 00000194.


---------------------------
OK
---------------------------

Die Speicheradresse ist immer die gleiche (00000194). Wo genau der Fehler liegt, weiß ich leider nicht, nur dass er irgendwann nach OnClose, daher wahrscheinlich beim Freigeben einer Komponente entsteht.

In dem Programm verwende ich ausser Standard-Kompos nur ein paar JVCL Komponenten (JvMemo, JvListview, JvSpinEdit) und dynamisch erzeugte Indy-Komponenten. Allerdings kommt die Zugriffsverletzung auch, wenn die Indy-Kompos noch gar nicht erzeugt worden sind. Ich habe ehrlich gesagt keinen Schimmer, was diesen Fehler auslöst :gruebel:

Hat jemand schonmal das gleiche Problem gehabt?

Gruß,
Dani

Sharky 31. Mai 2004 12:35

Re: Zugriffsverletzung bei Programmende.
 
Hai Dani,

was steht denn im .OnClose deiner MainForm?

Bernhard Geyer 31. Mai 2004 12:41

Re: Zugriffsverletzung bei Programmende.
 
Einfach mal Programm starten und über den Menüpunkt "Suchen/Laufzeitfehler suchen" und die Adresse 0044B874 eingeben. Stößt Du auf Delphi-Code oder nur auf Assemlber.

Falls nur Assemler auftaucht, Programm nochmal mit Debug-DCU's erstellen und laufen Lassen und beim beenden jetzt geänderte Adresse merken und nochmals per "Suchen/Laufzeitfehler suchen" auf die Suche gehen.

SirThornberry 31. Mai 2004 12:53

Re: Zugriffsverletzung bei Programmende.
 
eventuell gibst du eine Komponente frei die du gar nicht selbst erstellt hast und beim beenden des programmes wird dann versucht die komponente freizugeben was du ja aber schon gemacht hast.
Beispiel: Du hast auf das Programm einen Button gesetzt und gibst diesen irgendwann mit "button.free" frei. Dann kommt bei programmende eventuell ein Fehler weil der button schon freigegeben ist...

Dani 31. Mai 2004 13:16

Re: Zugriffsverletzung bei Programmende.
 
Gerade will ich die Laufzeitfehlersuche ausprobieren, kommt der Fehler plötzlich nicht mehr. Das scheint sich mit jeder Neucompilierung zu ändern :shock:

Fettes Dankeschön aber für den Hinweis auf dieses mir vorher unbekannte Feature! Da werd ich wohl noch ein paar andere, bereits aufgegebene Projekte nochmals durchgehen müssen =)

Bernhard Geyer 31. Mai 2004 15:16

Re: Zugriffsverletzung bei Programmende.
 
Hast Du evtl. beim beenden noch eine aktive DB-Verbindung.
Probiere mals diese im OnCloseQuery/OnClose-Event des Hauptformulars zu schließen. Hatte da auch mal ein Problem wenn die DB-Verbindung noch aktiv ist wenn das Programm beendet wird (Versuch Screen.Cursor zu setzen, obwohl das Screen-Objekt schon freigegeben war).


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