Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

Re: FormClose erzeugt Exception - Washalb?

  Alt 2. Dez 2009, 01:06
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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat