AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Wozu dient TList.Delete ??

Ein Thema von silver-moon-2000 · begonnen am 26. Sep 2014 · letzter Beitrag vom 27. Sep 2014
Antwort Antwort
silver-moon-2000

Registriert seit: 18. Feb 2007
Ort: Schweinfurt
170 Beiträge
 
Delphi XE Professional
 
#1

AW: Wozu dient TList.Delete ??

  Alt 26. Sep 2014, 15:13
Eigentlich hielt ich dies für selbstverständlich:
TList verwaltet Zeiger und keine Objekte. Delete = Pointer aus der Liste löschen;
TObjectList verwaltet Objekte (schlagt mich bitte nicht!). Bedeutet wenn OwnsObject = true; , dann Delete = Objekt freigeben und Pointer löschen (Das Objekt gehört ja der Liste, wie der Name schon sagt)
Ich fange gleich an, zu heulen. Du hast ja so Recht. Und ich wieder einmal viel zu kurz geschaut.

Delphi-Quellcode:
procedure TObjectList<T>.Notify(const Value: T; Action: TCollectionNotification);
begin
  inherited;
  if OwnsObjects and (Action = cnRemoved) then
    Value.Free;
end;
TObjectList gibt also wirklich den Wert frei!
Kann mir BITTE mal jemand sagen, wie ich so blöd sein konnte, das zu übersehen?

Ich ziehe somit die Frage zurück und behaupte das Gegenteil.
Tobias
Bitte nicht hauen , ich weiß es nicht besser
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#2

AW: Wozu dient TList.Delete ??

  Alt 26. Sep 2014, 15:18
Das ist bei den nicht-generischen Listen übrigens genauso.
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
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Wozu dient TList.Delete ??

  Alt 26. Sep 2014, 16:13
Kann mir BITTE mal jemand sagen, wie ich so blöd sein konnte, das zu übersehen?
Ach übertreib nicht, du bist nicht der erste und wirst nicht der letzte sein, der darüber stolpert
Allerdings haben DP-Leser jetzt keine Ausrede mehr:
TList verwaltet Zeiger und keine Objekte. Delete = Pointer aus der Liste löschen;
TObjectList verwaltet Objekte (schlagt mich bitte nicht!). Bedeutet wenn OwnsObject = true; , dann Delete = Objekt freigeben und Pointer löschen (Das Objekt gehört ja der Liste, wie der Name schon sagt)
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
silver-moon-2000

Registriert seit: 18. Feb 2007
Ort: Schweinfurt
170 Beiträge
 
Delphi XE Professional
 
#4

AW: Wozu dient TList.Delete ??

  Alt 26. Sep 2014, 16:49
Kann mir BITTE mal jemand sagen, wie ich so blöd sein konnte, das zu übersehen?
Ach übertreib nicht, du bist nicht der erste und wirst nicht der letzte sein, der darüber stolpert

Ach menno, jetzt darf ich nicht mal mehr in Selbstmitleid zergehen?

Ich versuchs mal: Welche Haarfarbe?
Braun, wobei die ersten grauen durchkommen, vermutlich vom zu vielen:
Tobias
Bitte nicht hauen , ich weiß es nicht besser
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: Wozu dient TList.Delete ??

  Alt 26. Sep 2014, 23:29
Braun, wobei die ersten grauen durchkommen, vermutlich vom zu vielen:
Gefärbt? Wenn Du 'blond' gesagt hättest, wüsste ich, warum. Aber so: Willkommen im Club. Man wird eben älter. Verstand wird durch Erfahrung ersetzt. Erfahrung ist das, was übrigbleibt, wenn das Gehirn eintrocknet. Glaube ich zumindest. Ich habs vergeseen. Das Alter...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.572 Beiträge
 
Delphi 12 Athens
 
#6

AW: Wozu dient TList.Delete ??

  Alt 27. Sep 2014, 10:57
Um das nochmal kurz zusammen zu fassen.

Es gibt Listen, welche die Befehle Delete und Remove kennen,
wobei der eine Befehle den Wert löscht und der andere Befehle den Wert entfernt und als Result rausgibt.

Ob beim Löschen nur der Zeiger (Wert) gelöscht wird, oder auch das verlinkte Objekt, hängt vom OwnsObjects ab.



Und das steht eigentlich auch alles in der OH, wenn man die sich mal durchliest.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#7

AW: Wozu dient TList.Delete ??

  Alt 26. Sep 2014, 16:15
Kann mir BITTE mal jemand sagen, wie ich so blöd sein konnte, das zu übersehen?
Ich versuchs mal: Welche Haarfarbe?
  Mit Zitat antworten Zitat
Antwort Antwort

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 09:55 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