![]() |
zugriffsverletzung bei Freeandnil
Hi,
Ich habe ein Probelem beim OnClose einer Form. Öffnen tue ich die Form so.
Delphi-Quellcode:
und beim FreeAndNil(Form3) kommt dann eine Zugriffsverletzung bei Adresse 004020CF.form3 := tform3.Create(self); try form3.showmodal; finally FreeAndNil(Form3); end; nun habe ich mal die Form in eine neue anwendung kopiert und aufgerufen Dort funktioniert alles . Das hat bei der Hauptanwendung auch mal funktioniert aber hab aktuell das Thema das es halt nicht mehr geht. Kann mir jemand sage nwie ich den Fehelr ev. näher eingrenzen kann? Also die Form ist beim close noch da ,also noch nicht free. Danke |
Re: zugriffsverletzung bei Freeandnil
Wie sieht der Destruktor aus? Wird das Fenster vielleicht beim Close schn freigegeben (caFree)?
|
Re: zugriffsverletzung bei Freeandnil
teste vor dem FreeAndNil, ob das Form assigned (d.h. <>nil) ist.
Es ist zu empfehlen Forms mit Release freizugeben und nachher die Variable auf nil zu setzen. |
Re: zugriffsverletzung bei Freeandnil
Hi,
also es ist assigned:
Delphi-Quellcode:
ZV kommt immer noch.
try
form3.showmodal; finally if Assigned(form3) = true then FreeAndNil(Form3); end; Mich wundert es halt,weil es immer ging,nur seit kurzem kommt der Fehler. Ich habe aber an dieser Ecke oder an der Form nix geändert. danke |
Re: zugriffsverletzung bei Freeandnil
Zitat:
Der Fehler wird irgendwo anders liegen. Ist form3 evtl. eine globale Variable die irgendwo anders auch verwendet wird (z.B. im Formular direkt anstatt dort z.B. self zu nehmen? |
Re: zugriffsverletzung bei Freeandnil
Hi,
Also wie gesagt es ging mal *GG*. Ich habe die Art des Aufrufes noch an anderen Stellen drin und dort gehn die auch alle nicht mehr. Immer beim Freeannil kommmt die ZV. mfg |
Re: zugriffsverletzung bei Freeandnil
Hi,
Es muss ja nicht zwangsweise an der Form selbst liegen. Vielleicht versuchst du ja im Form.OnDestroy oder OnClose etwas freizugeben, was entweder nie erstellt war, oder was du schon wieder freigegeben hast? |
Re: zugriffsverletzung bei Freeandnil
Wie gesagt es ist an mehreren Forms und ich habe an keiner Form in der Art was verändert.
|
Re: zugriffsverletzung bei Freeandnil
Read the Fine Manual
Mit Release können Sie das Formular aus dem Speicher entfernen. Release gibt das Formular erst frei, nachdem die Ausführung der Ereignisbehandlungsroutinen des Formulars und seiner untergeordneten Komponenten beendet ist. Die Methode stellt auch sicher, dass alle Botschaften in der Ereigniswarteschlange des Formulars vor dessen Freigabe bearbeitet werden. Jede Ereignisbehandlungsroutine für das Formular oder für dessen untergeordnete Objekte sollte Release anstelle von Free (Delphi) oder Delete (C++) benutzen. Ansonsten kann ein Speicherzugriffsfehler auftreten. |
Re: zugriffsverletzung bei Freeandnil
Hi,
also ich habs nun mir Form3.Release; probiert,doch leider kommt die ZV nun beim Release. danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 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