Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TCollection vs. TObjectlist (https://www.delphipraxis.net/88102-tcollection-vs-tobjectlist.html)

ozz 10. Mär 2007 07:48


TCollection vs. TObjectlist
 
Hallo Leute,
ich habe noch ein kleines Verständnisproblem für den Einsatz von Tcollection. Wann ist es empfehlendswert TCollection zu nehmen? Bisher habe ich den einzigen Vorteil darin gesehen, das ich die Teile auch strukturiert speichern kann. Gibt es noch andere Gründe?

Danke!

Pfoto 10. Mär 2007 08:22

Re: TCollection vs. TObjectlist
 
Hallo ozz!

welche Liste du einsetzt, hängt meines Erachtens vom Einsatzzweck ab,
denn jede dieser Listen hat eigene Besonderheiten.

Wie du schon sagtest, kannst du mit TCollection ein strukturierte
Liste anlegen, während du mit TObjectList eine einfache Liste
für Objekte hast.
Das besondere an TObjectList ist meines Wissen nur, dass du ihr auch
die Verwaltung der Objekte überlassen kannst, also das Freigeben
beim Löschen einzelner Einträge oder der ganzen Liste. Sonst ist
es im Grunde genommen eine einfache Liste für Pointer.

Man kann also beide Listen gut gebrauchen - nur eben für unterschiedliche
Einsatzgebiete.


Gruß
Pfoto

Jelly 10. Mär 2007 09:49

Re: TCollection vs. TObjectlist
 
Wie bereits erwähnt, bestimmt der Einsatzzweck welche Liste besser geeignet ist. Das Speichern wurde doch schon erwähnt: also TCollection. Die TCollectionItems können normalerweise nur bestimmte Objekttypen aufnehmen, bei TObjectList kannst Du reinhauen was Du willst. Erstellst Du Komponenten mit Eigenschaften, die im OI eine ItemsList öffnen (z.B. persitente Felder in TDataset, oder ein DBGrid mit seinen Columns Eigenschaft), so bist auf auf TCollection gezwungen.

Eine TObjectList ist einfach mal so schnell erstellt, bietet aber halt weniger Funktionalität als eine TCollection.

alcaeus 10. Mär 2007 09:55

Re: TCollection vs. TObjectlist
 
@Pfoto: auch TObjectList kuemmert sich um die Speicherverwaltung, wenn du ihr das sagst. Das neue Objekt musst du natuerlich selbst erstellen; TObjectList weiss ja nicht, was du da reinwerfen willst. Du erstellst ein Objekt, fuetterst es der Liste, und gut ist. Wirfst du es aus der Liste raus, macht die Liste selbst alles wieder sauber :)
Wenn du einfach nur ne Liste brauchst, nimm evtl. TObjectList.

Willst du eine verschachtelte Struktur usw. fuehren, und eventuell sogar speichern, dann nimm ne Collection. Jede published Property einer Klasse, die als Grundlage fuer eine Collection dient, wird dann abgespeichert; wenn du willst auch binaer und wenn du ganz lustig bist auch weiter codiert. Guck dir einfach die einschlaegigen Threads an.

Beide Listen gibts aber auch als Templates; d.h. dass du mit ein bisschen Compiler-Magic eine schoene typisierte Liste hast, und dir (v.a. bei TObjectList) das ewige casten von Objekten vermeiden kannst. Die Codelib hilft dir in dem Fall weiter :)

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz