Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Komponenten löschen - unbedingt erforderlich? (https://www.delphipraxis.net/128567-komponenten-loeschen-unbedingt-erforderlich.html)

torf160 1. Feb 2009 16:51


Komponenten löschen - unbedingt erforderlich?
 
Hallo,

ich bastel an einem Programm (mit Delphi 3), das zur Laufzeit neue Komponenten auf einem Formular erzeugt.
Muss ich die dann wirklich alle wieder löschen oder geschieht das automatisch, wenn das Programm beendet wird.

Schon mal vielen Dank für Eure Hilfe

torf160

DeddyH 1. Feb 2009 16:55

Re: Komponenten löschen - unbedingt erforderlich?
 
Wenn Du im Konstruktor einen Owner angibst, übernimmt dieser das Freigeben, ansonsten musst Du das selbst übernehmen.

torf160 2. Feb 2009 06:25

Re: Komponenten löschen - unbedingt erforderlich?
 
Zitat:

Wenn Du im Konstruktor einen Owner angibst, übernimmt dieser das Freigeben,
ansonsten musst Du das selbst übernehmen.
Was genau passiert denn, wenn ich nichts freigebe?
Bleibt der reservierte Speicher so lange reserviert, bis Windows beendet wird?

Die Komponenten werden so erstellt:
Delphi-Quellcode:
 BestellMenge[i] := TEdit.Create(Form2);
 BestellMenge[i].Parent := Form2.ScrollBox1;
Die würden also automatisch freigegeben, wenn das Programm beendet wird?

Aber was ist mit dieser Variablen?
Delphi-Quellcode:
 BestellungTherm[i] := TArtikel.Create;
Die wird in einer eigenen Unit als globale Variable erstelllt. Was könnte ich denn da für einen Owner angeben?

torf160

SirThornberry 2. Feb 2009 06:35

Re: Komponenten löschen - unbedingt erforderlich?
 
zweiteres wird nicht automatich freigegeben. Aber was ist so schwer daran das selbst zu machen? Du hast sie doch schon in einem Array. Also durchlaufe einfach am Ende das Array und gibt darin alles frei. :)

Zu deiner Frage was passiert wenn man das nicht macht:
Das ist Abhängig vom Betriebssystem. Unter XP wird sobald ein Prozess beendet wird auch all der Speicher, den dieser angefordert hat, wieder frei gegeben.
Unter Windows 3.11 wird der Speicher zum Beispiel nicht frei gegeben und somit fehlt dieser dem nächsten Programm.
Gleiches gilt, wenn ich mich nicht irre, auch für Windows 95 und Windows 98.

himitsu 2. Feb 2009 08:24

Re: Komponenten löschen - unbedingt erforderlich?
 
Zitat:

Zitat von SirThornberry
Gleiches gilt, wenn ich mich nicht irre, auch für Windows 95 und Windows 98.

sagen wir es mal so ... in der NT-Reihe wird der Speicher freigegeben (also bis 98/ME blieb sowas erhalten), aber das ist noch KEIN Grund es jetzt nicht mehr selbst freizugeben.

DeddyH 2. Feb 2009 08:30

Re: Komponenten löschen - unbedingt erforderlich?
 
Zitat:

Zitat von himitsu
...aber das ist noch kein Grund es jetzt nicht mehr selbst freizugeben.

So war es wahrscheinlich gemeint ;)


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