Delphi-PRAXiS
Seite 3 von 3     123   

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 VirtualStringTree: Speicherleck (https://www.delphipraxis.net/142392-virtualstringtree-speicherleck.html)

guidok 1. Nov 2009 11:33

Re: VirtualStringTree: Speicherleck
 
Zitat:

Zitat von alzaimar
Leute, was habt ihr eigentlich immer mit eurem 'Finalize'?
New/Dispose (bei Records) bzw. Create/Free (bei Klassen) kümmert sich doch um die ganze Chose. Deshalb programmiert man doch in Delphi und nicht in C...? Es wurde doch lang und breit erklärt, das dieses OnFreeNode nicht dazu dient, den Speicher freizugeben. Man muss das also selbst machen.

Ich würde mir auch keinen abbrechen, um die Information, die baumartig dargestellt werden soll, baumartig ablegen. Die Zeit hab ich einfach nicht:

Wenn ich in einem Baum polymorphe Informationen darstelle, klebe ich an jeden Knoten ein Objekt. Das Freigeben mache ich selbst, indem ich jedes Objekt in eine TObjectlist packe (OwnsObjects := True).

Was habe ich an dem Problem nicht verstanden, das es in meinen Augen keins ist? Außer, das ich den Sinn und Zweck dieses Events nicht verstanden habe.

Warum so aggresiv?

Ich habe das Problem schon verstanden und arbeite an der für mich besten Lösung dazu, ob nun mit Records oder mit Objekten soll mal meine Sorge sein.

OnFreeNode dient meiner Meinung nach schon dazu, Daten im Record freizugeben, die dessen bedürfen (so steht es zumindest in einigen Tutorials zum VT). Überrascht wurde ich nur davon, dass anscheinend nicht unbedingt alle eingefügten Knoten auch in OnFreeNode freigegeben werden und das kann durchaus auch anderen als mir passieren.

alzaimar 1. Nov 2009 12:57

Re: VirtualStringTree: Speicherleck
 
Zitat:

Zitat von guidok
Warum so aggresiv?

Verwundert. Nur verwundert.

Ich habe übrigens Finalize noch *nie* in meinen Projekten verwendet. Und ich programmiere seit D2.

himitsu 1. Nov 2009 13:13

Re: VirtualStringTree: Speicherleck
 
Hier bot sich Finalize halt an, da ja praktisch ein Record in einen anderen Injeziert wurde,
welcher aber vom Aufbau des injezierten Records keine Ahnung hat.

sirius 2. Nov 2009 18:01

Re: VirtualStringTree: Speicherleck
 
Zitat:

Zitat von himitsu
Delphi-Quellcode:
Include(Node.States, vsInitialUserData);
Initialize(Node);

Dafür gibt es ja (wie vom Entwickler beschrieben) TBaseTreeview.ValidateNode :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz