Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Free oder nicht free - das is hier die Frage ... (https://www.delphipraxis.net/116147-free-oder-nicht-free-das-hier-die-frage.html)

moelski 24. Jun 2008 10:36


Free oder nicht free - das is hier die Frage ...
 
Moin !

Habe mal ne Frage zum Verständnis ...

Wir nutzen folgendes um nicht beim Anwendungsstart alle Formulare erzeugen zu lassen:
Delphi-Quellcode:
  if not Assigned(UpdateForm) then
    UpdateForm := TUpdateForm.Create(Self);
  UpdateForm.Show;
Und beim Schließen des Formulars das hier:
Delphi-Quellcode:
  UpdateForm.Free;
UpdateForm := NIL;
Wird eigentlich das Formular damit wieder komplett aus dem Speicher entfernt, oder bleibt der Speicher den das Forumalr belegt hat weiterhin belegt?

Corpsman 24. Jun 2008 10:39

Re: Free oder nicht free - das is hier die Frage ...
 
wenn du Leaks drin hast bleibt speicher belegt.

ansonsten müste alles wieder frei sein.

Testen kannst du das mit Units wie Memcheck.pas

Bernhard Geyer 24. Jun 2008 10:40

Re: Free oder nicht free - das is hier die Frage ...
 
Ein Nicht Modales Dialog muß per .Release freigegeben werden ansonsten wirst du ab und zu Probleme mit dem Callstack/Windows-Message-Handling bekommen.

RavenIV 24. Jun 2008 10:41

Re: Free oder nicht free - das is hier die Frage ...
 
Du kannst auch sowas machen, dann wird das Form beim Schliessen automatisch gelöscht.
Macht aber meiner Meinung nur Sinn bei modalen Fenstern.

Delphi-Quellcode:
procedure TFoAboutBox.FormClose (Sender: TObject; var Action: TCloseAction);
begin
  // dispose on Close
  Action := caFree;
end;

moelski 24. Jun 2008 10:49

Re: Free oder nicht free - das is hier die Frage ...
 
Moin !

Spricht dann was dagegen generell ein .Release zu verwenden?

Oder muss ich bei Show -> Release und bei ShowModal -> Free ?

RavenIV 24. Jun 2008 10:53

Re: Free oder nicht free - das is hier die Frage ...
 
Aus der Delphi7-Hilfe:
Zitat:

Um ein Formular freizugeben, ruften Sie seine Methode Release auf. Dadurch wird sichergestellt, dass das Formular erst aus dem Speicher entfernt wird, wenn die Ausführung seiner eigenen und der Ereignisbehandlungsroutinen seiner Komponenten beendet ist.

moelski 24. Jun 2008 10:53

Re: Free oder nicht free - das is hier die Frage ...
 
Ok ich nehm ein Release und bin glucklitsch

jbg 24. Jun 2008 11:32

Re: Free oder nicht free - das is hier die Frage ...
 
Zitat:

Zitat von moelski
Spricht dann was dagegen generell ein .Release zu verwenden?

Wenn die Name-Eigenschaft deines Formulars immer den selben Namen haben und nicht ein _1, _2, ... angehängt bekommen soll, dann kann ein Release schon mal dagegen laufen. Denn Release gibt das Formular erst frei, wenn die Release-Botschaft verarbeitet wurde. Erzeugst du in der Zeit aber ein neues Formular der selben Klassen im selben Owner, dann wird _1, _2, ... an den Namen angehängt.

moelski 24. Jun 2008 11:36

Re: Free oder nicht free - das is hier die Frage ...
 
Moin !

Und von was hängt die Release Botschaft ab?
Bzw. was ist nun die sinnvollste Vorgehensweise?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:22 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