System.Classes.TList.Capacity

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

property Capacity: Integer read FCapacity write SetCapacity;

C++

__property int Capacity = {read=FCapacity, write=SetCapacity, nodefault};

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
property public
System.Classes.pas
System.Classes.hpp
System.Classes TList

Beschreibung

Gibt die zugewiesene Größe des Zeiger-Arrays an, das vom TList-Objekt verwaltet wird.

Mit Capacity wird die Anzahl der Zeiger vorgegeben, die in der Liste enthalten sein müssen. Wenn nicht genügend Speicher vorhanden ist, um die Liste auf ihre neue Größe zu erweitern, tritt eine EOutOfMemory-Exception auf.

Capacity kann gelesen werden, um die Anzahl der Objekte zu ermitteln, die in der Liste Platz finden, ohne dass weiterer Speicher reserviert werden muss. Verwechseln Sie aber Capacity nicht mit der Eigenschaft Count. Diese gibt die Anzahl der Einträge in der Liste an. Daher ist der Wert von Capacity immer größer oder gleich Count. Wenn Capacity größer als Count ist, kann der nicht genutzte Speicher freigegeben werden, indem Capacity der Wert von Count zugewiesen wird.

Wird ein Element zu einer Liste hinzugefügt, die bereits vollständig gefüllt ist, wird der Wert von Capacity automatisch erhöht. Allerdings lässt sich die Anzahl der Speicherzuweisungen verringern und damit die Leistung der Anwendung erhöhen, indem die Eigenschaft Capacity mit einem größeren Wert belegt wird, bevor Objekte hinzugefügt werden. Beispiel:

Anmerkung:  Delphi-Beispiel:

List.Clear; List.Capacity := Count; for I := 1 to Count do List.Add(...);

Anmerkung:  C++ Beispiel:

List->Clear(); List->Capacity = Count; for (int I = 0; I < Count; I++) List->Add(...);

Indem Capacity vor dem Eintritt in die Schleife einen neuen Wert erhält, wird verhindert, dass bei jeder der nachfolgenden Add-Operationen erneut Speicher für die Liste reserviert wird. Damit steigert sich die Leistung der Anwendung und außerdem ist sichergestellt, dass die Add-Operation keine Exception auslöst.

Siehe auch