![]() |
TListView.Item.Data wird nicht zerstört
Hallo,
man kann bekanntlich an TListView Einträge beliebige Objekte über den Pointer 'Data' hängen. Um die Liste zu löschen benutze ich TListView.Items.Clear. Dabei wird aber nicht der Destruktor des an Data hängenden Objektes aufgerufen. In dem Objekt speichere ich unter anderem PIDLs, die man generell über das IMalloc-Interface freigeben sollte. Muss ich das jetzt nicht tun? Ist das ein Delphi-Fehler das die Objekte nicht richtig zerstört werden? Grüße Sebastian |
Re: TListView.Item.Data wird nicht zerstört
Moin!
Bei allen Data und Objects[] Eigenschaften hat sich der Benutzer um die Freigabe der Objekte zu kümmern. TListItem hat IMHO auch nur eine Pointer Variable als Data Typ und daher weiss er nicht mal um was es sich für Daten handelt oder ob der Pointer selber vielleicht nur eine Zahl ist. Darum muss man sich selber kümmern da man selber nur das Wissen darüber hat. MfG Muetze1 |
Re: TListView.Item.Data wird nicht zerstört
Ja, dass stimmt. Also muss ich eine Schleife programmieren, welche alle Items durchgeht und den Destruktor aufruft.. :cyclops:
|
Re: TListView.Item.Data wird nicht zerstört
Moin!
Ich mache das bei eigenen Klassen meist im Destructor oder im FormDestroy. Geht ja flink:
Delphi-Quellcode:
So spare ich mir noch eine lokale Schleifenvariable... :wink:
Procedure TForm1.FormDestroy(Sender: TObject)
Var Data : TDataClass; Begin While ( ListView.Items.Count > 0 ) Do Begin Data := TDataClass( ListView.Items[0].Data ); // ich habe die Eigenschaft nicht genau im Kopf, du weisst ja was gemeint ist Data.Free; ListView.Items.Delete(0); End; End; MfG Muetze1 |
Re: TListView.Item.Data wird nicht zerstört
danke für den Code. Da das Ganze bei mir in einem Thread läuft muss es lokal bleiben. :nerd:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:43 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