AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

zugriffsverletzung bei Freeandnil

Ein Thema von renekr · begonnen am 12. Sep 2008 · letzter Beitrag vom 12. Sep 2008
Antwort Antwort
Seite 1 von 2  1 2      
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#1

zugriffsverletzung bei Freeandnil

  Alt 12. Sep 2008, 08:32
Hi,
Ich habe ein Probelem beim OnClose einer Form.
Öffnen tue ich die Form so.
Delphi-Quellcode:

  form3 := tform3.Create(self);
  try
      form3.showmodal;
      finally
      FreeAndNil(Form3);
      end;
und beim FreeAndNil(Form3) kommt dann eine Zugriffsverletzung bei Adresse 004020CF.
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: zugriffsverletzung bei Freeandnil

  Alt 12. Sep 2008, 08:35
Wie sieht der Destruktor aus? Wird das Fenster vielleicht beim Close schn freigegeben (caFree)?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: zugriffsverletzung bei Freeandnil

  Alt 12. Sep 2008, 08:37
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.
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: zugriffsverletzung bei Freeandnil

  Alt 12. Sep 2008, 08:42
Hi,
also es ist assigned:

Delphi-Quellcode:
  try
      form3.showmodal;
      finally
      if Assigned(form3) = true then
      FreeAndNil(Form3);
      end;
ZV kommt immer noch.
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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

Re: zugriffsverletzung bei Freeandnil

  Alt 12. Sep 2008, 08:44
Zitat von MarcoWarm:
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.
Der in FreeAndNil vorhandene Free-Methodenaufruf checkt das schon selbst auf nil!

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?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: zugriffsverletzung bei Freeandnil

  Alt 12. Sep 2008, 08:51
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
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: zugriffsverletzung bei Freeandnil

  Alt 12. Sep 2008, 09:05
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?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: zugriffsverletzung bei Freeandnil

  Alt 12. Sep 2008, 09:30
Wie gesagt es ist an mehreren Forms und ich habe an keiner Form in der Art was verändert.
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#9

Re: zugriffsverletzung bei Freeandnil

  Alt 12. Sep 2008, 09:44
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.
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: zugriffsverletzung bei Freeandnil

  Alt 12. Sep 2008, 09:47
Hi,
also ich habs nun mir
Form3.Release;
probiert,doch leider kommt die ZV nun beim Release.

danke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:18 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