AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Aus einer generic TList richtig löschen

Ein Thema von Shark99 · begonnen am 19. Jul 2016 · letzter Beitrag vom 19. Jul 2016
Antwort Antwort
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#1

Aus einer generic TList richtig löschen

  Alt 19. Jul 2016, 18:50
Delphi-Version: XE5
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:
  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?
Ich hab noch zusätzliche Fragen zu List.Remove()

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?
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
5.872 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Aus einer generic TList richtig löschen

  Alt 19. Jul 2016, 18:59
Da dein TDataItem 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 TList<> sondern eine TObjectList<>
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#3

AW: Aus einer generic TList richtig löschen

  Alt 19. Jul 2016, 19:14
Gibt es Vor/Nachteile zwischen TList<T> und TObjectList<T>?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.367 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Aus einer generic TList richtig löschen

  Alt 19. Jul 2016, 19:55
TObjectList ist von TList abgeleitet und kümmert sich ggf. selbst um die Freigabe ihrer enthaltenen Objekte.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#5

AW: Aus einer generic TList richtig löschen

  Alt 19. Jul 2016, 20:38
d.h. bei TObjectList.Free wird bei allen Objekten der Liste auch ein Free ausgeführt?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.367 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Aus einer generic TList richtig löschen

  Alt 19. Jul 2016, 20:56
Sofern OwnsObjects auf true steht (Standard), ja.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf