Autor Beitrag
Coyote
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 11.09.02 14:43 
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

ausblenden 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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: 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:

ausblenden 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

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
wwerner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 185



BeitragVerfasst: 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.

_________________
Gruß

Wolfgang

----------
zu hause ist es doch am schönsten
Coyote Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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