Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Speicherleck in Componentsliste (https://www.delphipraxis.net/193351-speicherleck-componentsliste.html)

S3nsele22 20. Jul 2017 14:43

Speicherleck in Componentsliste
 
Hallo,
folgendes Problem:
Ich generiere dynamisch TPopupMenu Elemente und füge diese danach zu meiner selber generierten Liste hinzu. Dies passiert in einer Funktion an deren Anfang meine selber generierte Liste geleert wird. Dies geschieht indem ich sie durchlaufe und jedes einzelne Element darin mit .Free freigebe. Dadurch wird zwar meine Liste geleert aber die Elemente bleiben in der Components-Liste meines Formulars, sprich der Formular.ComponentCount wächst jedes mal wenn die Funktion aufgerufen wird.

Was mache ich hier falsch bzw. was muss ich machen damit das Element beim Löschen aus meiner Liste auch gleich aus den Components des Formulars gelöscht wird?

Vielen Dank im Voraus für die Hilfe.

Glados 20. Jul 2017 14:45

AW: Speicherleck in Componentsliste
 
Zeig doch mal den Code wie du die Elemente löschst, dann kann man mehr sagen.
Programm-name, Variablennamen usw kannst du ja ggf. anonymisieren.

S3nsele22 20. Jul 2017 15:03

AW: Speicherleck in Componentsliste
 
Hier der grobe Ablauf der Funktion:

anzPopUps := 60;

for i := PopUpList.Items.Count - 1 downto 0 do
begin
PopUpList.Items[i].Free;
end;

PopUpList.Items.Clear;

for i := 0 to anzPopUps do
begin
PopUpList.Add(TPopupMenu.create(aOwnerForm));
end;

hoika 20. Jul 2017 15:49

AW: Speicherleck in Componentsliste
 
Hallo,
die erzeugten Popupmenus werden doch irgendeiner Komponente über das Property PopupMenu zugewiesen.
Setzt du das dort nach dem Löschen des PopupMenus auch zurück auf nil?

Wenn du bei Deiner Liste TObjectList benutzt, kannst du Dir das .Free auch sparen.


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