![]() |
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 |
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 ![]() Freundliche Grüße |
Re: Object aus TreeView auslesen
Hallo marabu,
danke für die schnelle Antwort.
Delphi-Quellcode:
Werde mich mal mit dem Programm 'MemCheck' beschäftigen.
procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
var z: integer; begin // Speicher wieder aufräumen! Node.delete; end; 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 |
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 |
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 17:48 Uhr. |
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