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 Form entladen??? (https://www.delphipraxis.net/29387-form-entladen.html)

max666 8. Sep 2004 15:26


Form entladen???
 
Hallo!

Ich habe mal folgende Frage zur Freigabe von Speicher: Wenn ich von einer Anwendung aus eine andere Form erzeuge mit:

Delphi-Quellcode:
form9:=TForm9.Create(Application);
form9.Width:=250;
form9.Height:=90;
form9.Show;
und nach Beendigung meiner Arbeit in der Form9 diese Form schließen und entladen möchte, dann muss ich das doch machen mit:

Delphi-Quellcode:
Form9.close;
Form9.Release;
Nur leider muss ich mit dem Taskmanager feststellen, dass meine Anwendung auch nach Schließen des Fensters (Form9) noch immer den Speicherplatz benötigt, den es benötigt hat, als ich Form9 erzeugt hatte.
Und wenn ich die Form9 mehrmals erzeuge und schließe, steigt der benötigte Speicherplatz mit jeder Erzeugung der Form9 etwas an.

Kann mir jemand sagen, was ich falsch mache?

Gruß aus dem Emsland!
MAX666

jfheins 8. Sep 2004 15:30

Re: Form entladen???
 
Probiers mal mit
Delphi-Quellcode:
Form9.free;

fkerber 8. Sep 2004 15:31

Re: Form entladen???
 
Hi!

Ich weiß nicht genau, was Release macht, aber teste doch mal

Delphi-Quellcode:
FreeandNil(Form9);
// oder
Form9.Free;

Ciao Frederic

max666 8. Sep 2004 15:35

Re: Form entladen???
 
Hallo!

In der Delphi-Help steht drin, dass man Free nicht verwenden soll, da Pointer-Probleme auftreten können. Habe ich allerdings schon versucht und erhielt immer eine Fehlermeldung.

Aenogym 8. Sep 2004 15:35

Re: Form entladen???
 
Zitat:

Zitat von Die Delphi OH
Use Release to destroy the form and free its associated memory.

Release does not destroy the form until all event handlers of the form and event handlers of components on the form have finished executing. Release also guarantees that all messages in the form's event queue are processed before the form is released. Any event handlers for the form or its children should use Release instead of Free (Delphi) or delete (C++). Failing to do so can cause a memory access error.

release ist dem free bei formularen also vorzuziehen ;)

Aenogym

Aenogym 8. Sep 2004 15:38

Re: Form entladen???
 
ich habe das ganze grad mal bei meinem aktuellen projekt geprüft (welches seeehr viele fenster verwendet).

ich habe dasselbe problem!

weiß jemand, wie man den speicher wieder richtig "leert"?

mein programm ist ein instant messenger und jedesmal, wenn sich jemand anmeldet, kommen ca. 500KB dazu :shock: (hängt aber von der zahl seiner kontakte ab)

Aenogym

max666 8. Sep 2004 15:49

Re: Form entladen???
 
Also mit Free funktioniert es bei mir.
Du musst aber zusehen, dass keine Variablen, Funktionen, Procedure usw. von einer anderne Form auf die zu schließende Form und umgekehrt verweisen.


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