Einzelnen Beitrag anzeigen

Aves

Registriert seit: 20. Jul 2009
2 Beiträge
 
Delphi 7 Professional
 
#1

EInvalidPointer bei Schliessen eines Frames

  Alt 8. Aug 2009, 19:48
Hallo zusammen,

ich habe einen abgeleiteten Frame in dem noch einige andere Objekte (Frames und Objekte), teilweise abgeleitet, sind.
Alles (meiner Meinung nach), was ich öffne, schliesse ich auch wieder in der umgekehrten Reihenfolge (duch FreeAndNil).

Jetzt ist es aber so, dass ich im Destroy der Vaterklasse eine AV (EInvalidPointer) habe. Ich habe einen Text in eine Debugdatei geschrieben, daher weiss ich das.

Frame1 und Object1 enthalten ihrerseits auch noch einige andere Objekte. Es ist alles recht unübersichtlich, ich habe teilweise schon aufgeräumt, aber anscheinend noch nicht genug.
Die owner beim Create sind mittlerweile alle auf nil gesetzt.

Delphi-Quellcode:
destructor TAbgeleiteterFrame.Destroy;
begin
  WriteDebugString(TAbgeleitetetKlasse.Destroy');
FreeAndNil(TZusatzFrame1(Frame1));
FreeAndNil(TObject1(Object1));
inherited Destroy;
end;
Delphi-Quellcode:
destructor TVaterFrame.Destroy();
begin
  WriteDebugString(TVaterKlasse.Destroy');
inherited Destroy(); <--- Hier AV
end;
Jetzt ist es ausserdem noch so, dass ich diese AV im Debugger fast nicht habe, eigentlich nur, wenn ich alles noch durch viele Sleeps verlangsame und ständig öffne und schliesse. In der Exe tritt es aber sehr häufig auf, meist nach dem 1. oder 2. Mal schliessen.

Jetzt meine Frage: Wie komme ich dahinter, wodurch das ausgelöst wird? Ich möchte ungern noch mehr Code posten. Wie kann ich meinen Debugger dazu bringen, auch ständig zu diesem EInvalidPointer zu kommen? Oder besser noch, wie kann ich meine Exe dazu bringen, sich genauso wie im Debugger zu verhalten?

Ich hoffe, Ihr könnt mir ein paar Tips geben.
Vielen Dank schon mal im Vorraus!

Aves
  Mit Zitat antworten Zitat