Gemeinsamkeiten der Listenklassen

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Mit Listen arbeiten

Obwohl sich die Listenklassen in der RTL sowohl hinsichtlich ihrer Elemente als auch ihrer Abstammung unterscheiden, enthalten sie doch eine Reihe gemeinsamer Methoden zum Hinzufügen, Entfernen, Umsortieren und Abrufen der Listenelemente.

Listenelemente hinzufügen

Die meisten Listenklassen verfügen über eine Add-Methode, die es ermöglicht, neue Elemente am Ende der Liste hinzuzufügen (bei unsortierten Listen) oder an geeigneter Position einzufügen (bei sortierten Listen). Üblicherweise übernimmt die Methode Add das neue Element als Parameter und gibt die Position zurück, an der das Element eingefügt wurde. Bei Bucket-Listen (System.Contnrs.TBucketList und System.Contnrs.TObjectBucketList) übernimmt die Methode Add nicht nur ein neues Element, sondern zusätzlich einen mit dem Element verknüpften Wert. Bei von TCollection abgeleiteten Klassen bearbeitet die Add-Methode keine Parameter, sondern erstellt ein neues Listenelement. Hier gibt die Add-Methode das von ihr hinzugefügte Listenelement zurück, sodass den Eigenschaften des neuen Elements Werte zugewiesen werden können.

Die Listenklassen besitzen neben der Add- auch eine Insert-Methode. Sie arbeitet wie die Add-Methode, verfügt aber über zusätzliche Parameter, die es ermöglichen, die Position für das neue Element vorzugeben. Die Insert-Methode fehlt, wenn die Position der Elemente durch die Listenstruktur vorgegeben ist. So wäre es z.B. sinnlos, Insert auf eine sortierte Liste oder eine Bucket-Liste anzuwenden, da in beiden Fällen die Listenalgorithmen selbst die geeignete Listenposition bestimmen.

Als einzige Listenklasse besitzen Stapellisten keine Add-Methode. Bei diesen Listen handelt es sich um Warteschlangen und Stacks. Hier dient die Methode Push zum Einfügen neuer Elemente. Diese Methode übernimmt ein Element als Parameter und fügt es an der richtigen Position ein.

Listenelemente entfernen

Zum Löschen eines einzelnen Listenelements stehen die Methoden Delete und Remove zur Verfügung. Delete übernimmt als Parameter den Index des zu löschenden Elements. Dagegen erwartet Remove eine Referenz auf das entsprechende Element und nicht dessen Index. Einige Listenklassen unterstützen nur eine der beiden Methoden, manche auch beide.

Nicht nur beim Hinzufügen, sondern auch beim Entfernen von Listenelementen verhalten sich Stapellisten abweichend von den anderen Listenklassen. Statt Delete und Remove verwenden sie die Methode Pop. Diese benötigt kein Argument, da jeweils nur ein Element entfernt werden kann.

Zum Löschen sämtlicher Listenelemente wird die Clear-Methode verwendet. Mit Ausnahme von Stapellisten ist Clear in allen Listenklassen verfügbar.

Auf Listenelemente zugreifen

Alle Listenklassen (außer System.Classes.TThreadList und den Stapellisten) verfügen über eine Eigenschaft, die den Zugriff auf Listenelemente ermöglicht. Üblicherweise heißt sie Items. Für Stringlisten lautet der Name Strings, für Bucket-Listen Data. Die Eigenschaften Items, Strings und Data arbeiten mit einem Index, sodass angegeben werden kann, auf welches Listenelement zugegriffen werden soll.

In der Klasse TThreadList müssen Sie die Liste vor einem Zugriff mit LockList sperren. Diese Methode gibt das Objekt TList mit den Listenelemente zurück, auf die Sie jetzt zugreifen können.

In Stapellisten ist nur der Zugriff auf das "obere" Listenelement möglich. Die Methode Peek liefert eine Referenz auf dieses Element.

Listenelement umordnen

Einige Listenklassen stellen Methoden zur Verfügung, mit denen die Elemente der Liste neu angeordnet werden können. Einige Klassen besitzen die Methode Exchange, die die Position zweier Listenelemente vertauscht. Einige Klassen verfügen über die Methode Move, mit der ein Element an die in einem Parameter angegebene Position verschoben werden kann. Einige Listenklassen stellen die Methode Sort zur Verfügung, mit der die Elemente der Liste neu sortiert werden können.

In der Online-Hilfe erfahren Sie, welche dieser Methoden in einer bestimmten Listenklasse verfügbar sind.

Siehe auch