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