Delphi-PRAXiS
Seite 2 von 2     12   

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 Object aus TreeView auslesen (https://www.delphipraxis.net/89378-object-aus-treeview-auslesen.html)

Chemiker 30. Mär 2007 20:11

Re: Object aus TreeView auslesen
 
Hallo marabu,

haben Deinen Vorschlag aufgegriffen aber der Compiler meldet dann ‚Ungültiger Index’.


Delphi-Quellcode:
procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
var z: integer;
begin
 // Speicher wieder aufräumen!
 For z:=TreeView1.Items.Count-1 downto 0 do
 begin
   dispose(TreeView1.Items[z].data);
 end;
end;

Wie kann man feststellen, ob eine Anwendung Speicherlöscher hinterlässt? Kannst Du mir da einen Tipp geben. Hilft da einem der Debugger weiter und sagt das Object xyz ist noch nicht freigeben.

Vielen Dank an alle, die mir schon weiter geholfen haben.

Bis bald Chemiker

marabu 30. Mär 2007 20:19

Re: Object aus TreeView auslesen
 
Hallo Chemiker,

in dem Ereignis darfst du nur den Speicher des Knoten freigeben, der dir als Parameter übergeben wird.

Speicherlöcher kannst du z.B. mit MemCheck ermitteln.

Freundliche Grüße

Chemiker 30. Mär 2007 20:46

Re: Object aus TreeView auslesen
 
Hallo marabu,

danke für die schnelle Antwort.

Delphi-Quellcode:
procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
var z: integer;
begin
 // Speicher wieder aufräumen!
 Node.delete;

end;
Werde mich mal mit dem Programm 'MemCheck' beschäftigen.

Zum Abschluss noch eine Frage. Wenn die Anwendung beendet wird, wird dann der Speicher auch freigegeben der innerhalb der Anwendung nicht ordnungsgemäß freigegeben worden ist?


Bis bald Chemiker

marabu 30. Mär 2007 21:13

Re: Object aus TreeView auslesen
 
In der Regel ja. Das ist wie beim Fliegen: Runter kommen sie alle. Was mich an eine Anekdote vom Frankfurter Flughafen erinnert:

Auf der Besucherterasse des Flughafens hat mal ein älteres Fräulein den Erklärungen zur Problematik von Warteschleifen gelauscht und nach heftigem Sinnieren aufgeregt gefragt, was passiere, wenn einem Flieger beim Warten der Treibstoff ausgehe. Der PR-Mann hat kurz nachgedacht und ihr dann bestätigt, dass ein solcher Fall sehr tragisch sei, weil Crew und Passagiere dann mitunter mehrere Tage in der Warteschleife feststecken, bis man sie retten könne.

Übrigens: Ich hatte mit etwas ähnlichem wie TObject(Node.Data).Free gerechnet, nicht mit Node.Delete! Gelöscht wird der Knoten ja in diesem Augenblick gerade, sonst würde das Ereignis nicht feuern. Und der Speicherplatz des mit Create erzeugten Object, welches in Node.Data abgelegt wurde, wird durch Node.Delete nicht wieder freigegeben. Gibt es da keine Zugriffsfehler?

Gute Nacht

Chemiker 30. Mär 2007 22:36

Re: Object aus TreeView auslesen
 
Hallo marabu,

nein der Compiler meckert nicht. Wenn der Knoten gelöscht ist, ist doch auch der Zeiger von Data gelöscht oder?

Ich muss mir morgen das ganze noch einmal genau ansehen.



Bis bald Chemiker


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:43 Uhr.
Seite 2 von 2     12   

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