![]() |
Delphi-Version: XE5
Aus einer generic TList richtig löschen
Ich bin mir recht sicher, dass ich ein Element auch einer TList<t> so löschen muss, aber es ist besser ich frage bevor es Speicherleaks oder AV gibt.
Delphi-Quellcode:
Ich hab noch zusätzliche Fragen zu List.Remove()
TDataItem = class
Modified: int64; Data: string; Constructor Create(iModified: int64; sData: string); end; var TestList: TList<TDataItem>; DataItem: TDateItem; i: Integer; ... TestList := TList<TDataItem>.Create; for i := 0 to 10 do TestList.Add(TDataItem.Create(i,'test')); DataItem := TestList[5]; TestList.Delete(5); DataItem.Free; // nötig? Wird beim Remove das Objekt automatisch befreit, oder muss ich es auch manuell mit Free tun? Was ist wenn ich an Remove ein Objekt übergebe welches mehrmals in der Liste vorhanden ist. Wird da nur das erste gefundene gelöscht? Muss ich um Remove zu verwenden beim Erstellen von TestList einen IComparer mit angeben? |
AW: Aus einer generic TList richtig löschen
Da dein
Delphi-Quellcode:
ein Objekt ist und du der Meinung bist dass diese Objekte dieser Liste gehören und diese sich bitte um Freigabe und alles kümmern soll suchst du keine
TDataItem
Delphi-Quellcode:
sondern eine
TList<>
Delphi-Quellcode:
TObjectList<>
|
AW: Aus einer generic TList richtig löschen
Gibt es Vor/Nachteile zwischen TList<T> und TObjectList<T>?
|
AW: Aus einer generic TList richtig löschen
TObjectList ist von TList abgeleitet und kümmert sich ggf. selbst um die Freigabe ihrer enthaltenen Objekte.
|
AW: Aus einer generic TList richtig löschen
d.h. bei TObjectList.Free wird bei allen Objekten der Liste auch ein Free ausgeführt?
|
AW: Aus einer generic TList richtig löschen
Sofern OwnsObjects auf true steht (Standard), ja.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 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