Entwickler-Ecke

Sonstiges (Delphi) - Speicher freigeben nach ShowModal ?


Coyote - Mi 11.09.02 14:43
Titel: Speicher freigeben nach ShowModal ?
Hallo zusammen,
Ich bin Anfänger in der Programmierung mit Delph von daher bitte nicht steinigen wenn meine Frage alzu trivial ist.

Ich schreibe ein Programm welches mit ShowModal einige Formulare aufruft. Der Aufruf erfolgt z.B. so


Quelltext
1:
2:
3:
4:
procedure TForm1.Eingeben1Click(Sender: TObject);
begin
  Form2.ShowModal;
end;


In der Unit des Formulares finden Bearbeitungen mit TTable und TQuery Komponenten statt. Das Formular schliess ich mittels


Quelltext
1:
2:
3:
4:
procedure TForm2.BitBtn2Click(Sender: TObject);
begin
  Form2.ModalResult:=mrOK;
end;


Schau ich mir jetzt die Speichernutzung des Programms mit den WindowsXP Taskmanager an so belegt mein Programm nach dem Start ca. 2,5 MB. Nach dem ShowModal belegt das Programm ca. 5MB. Nach dem Schliessen der Form2 jedoch immer noch 5MB. Meines Erachtens muesste doch dieser Speicher wieder freigegeben werden.

Was mach ich falsch ?
Habe schon mit Form2.Release oder Form2.Free herumexperementiert, doch bisher ohne Erfolg.


LCS - Mi 11.09.02 14:51

Hi
schau dir mal an was unter Projekt-Optionen im Register Formulare steht. In der Standardeinstellung werden alle Formulare deines Programms von Delphi erzeugt. Deshalb kannst du sie so einfach mit ShowModal anzeigen. Umgekehrt heisst das, sie sind auch noch vorhanden, wenn du sie schon gar nicht mehr brauchst, weil Delphi auch das Aufräumen selbst übernimmt.
Wenn du das selbst übernehmen willst, kannst du dein Formular aus der Liste der automatisch erstellten rausnehmen und das selbst machen:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.EingebenClick(Sender: TObject);
var
  EingabeForm: TForm2;
begin
  EingabeForm := TForm2.Create(self);  //Erzeugen
  try
    EingabeForm.ShowModal;  //Mach was du willst
  finally
    EingabeForm.Release; //Wieder freigeben
  end;
end;


Gruss Lothar


wwerner - Mi 11.09.02 15:05

Wahrscheinlich machst du gar nix falsch. Windows ist halt nicht der Speicherkönig. Minimire einmal dein Programm in die Taskleiste und sieh dir dann den Speicher an.


Coyote - Mi 11.09.02 15:13

Danke für die schnellen Antworten.
Die Formulare selbst zu erzeugen hatte keinen Einfluss auf dem Speicherbedarf und deren Freigabe.

Als ich das Programm einmal minimiert und wieder hergestellt habe hat sich auch der Speicherbedarf drastisch reduziert.

Nach dieser Erkenntnis muss ich mir wohl keine Sorgen machen über den Speicherbedarf meines Programms.

Danke nochmals für Eure Antworten

Gruß
Dirk