Zitat von
sx2008:
Das hier ist dein "Todesurteil":
Delphi-Quellcode:
procedure TTrace_Frm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Trace_List.Free;
end;
Das Objekt wird freigeben, obwohl nach .Free noch weitere Methoden aufgerufen werden (unsichtbar von der
VCL).
Wieso sollten da noch Methoden aufgerufen werden? ... von der
VCL?
Trace_List ist
nicht das Formular, ansonsten hättest du da recht
Der Fehler ist, dass das Object Trace_List in OnCreate erzeugt wird um im OnClose geschmissen wird.
Und beim nächsten Anzeigen des Formulars ist das Object Trace_List halt nicht da ...
Ob das Free wirklich in OnDestroy gehört hängt ja von der Logik ab ... allerdings rein logisch betrachtet gehört es da hin
Ist also von daher ein Design-Fehler, das so aufzubauen.
Um ganz sicher zu gehen, kann man das Formular auch immer zur Laufzeit erzeugen, dann ist das immer ganz frisch.
Solange man mit dem Ein- Ausblenden des Formulars keine Lauflicht bauen will, ist der Performance-Verlust auch vernachlässigbar.
Zudem aast man nicht so mit dem
RAM rum.
cu
Oliver