System.Classes.TList.Capacity
Delphi
property Capacity: Integer read FCapacity write SetCapacity;
C++
__property int Capacity = {read=FCapacity, write=SetCapacity, nodefault};
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
property | public | System.Classes.pas System.Classes.hpp |
System.Classes | TList |
Description
Indique la taille allouée au tableau de pointeurs géré par l'objet TList.
Affectez à Capacity le nombre de pointeurs (la capacité) que la liste doit gérer. Il se produit une exception EOutOfMemory, s'il n'y a pas assez de mémoire pour agrandir la liste à sa nouvelle taille quand une valeur est affectée à la propriété Capacity.
Consultez la propriété Capacity pour savoir combien la liste peut contenir d'objets sans lui réallouer de la mémoire. Ne confondez pas Capacity avec la propriété Count qui indique le nombre effectif d'entrées utilisées de la liste. La valeur de Capacity est toujours supérieure ou égale à celle de Count. Si Capacity est supérieure à Count, il est possible de récupérer la mémoire inutilisée en affectant la valeur de Count à Capacity.
Lors de l'ajout d'un objet à une liste ayant déjà atteint sa capacité, la propriété Capacity est automatiquement augmentée. Il est préférable d'affecter une nouvelle valeur à Capacity avant d'ajouter des éléments, car cela peut éviter les réallocations mémoire qui nuisent aux performances. Par exemple :
Remarque : Exemple Delphi :
List.Clear; List.Capacity := Count; for I := 1 to Count do List.Add(...);
Remarque : Exemple C++ :
List->Clear(); List->Capacity = Count; for (int I = 0; I < Count; I++) List->Add(...);
L'affectation d'une valeur à Capacity avant d'entrer dans la boucle évite que chacun des Add suivants ne conduise à une réallocation de la mémoire. En procédant ainsi, l'opération Add est plus rapide et ne déclenche jamais d'exception.