Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#12

AW: TStringList.Capacity Zuweisung?

  Alt 29. Dez 2012, 17:24
Der Grund meiner Frage war folgender: Wenn man in einer StringList die Capacity z.B. auf den Wert 10 einstellt, sollten beim StringList.LoadFromFile maximal 10 Zeilen gelesen werden (auch wenn die Datei etwa 100 Zeilen hat). Wäre eine solche Vorgangsweise möglich? Oder müsste man dazu eher die Methode LoadFromFile überschreiben?
Ich denke Capacity ist für etwas anderes Gedacht. Bevor man mit Add einen String anfügt, wird vorher der Speicher der Liste z. B. um 1 erhöht, so dass nun ein String angefügt werden kann. Allerdings ist das nicht optimal für jeden String den Speicher separat zu erhöhen, also wird mit Capacity etwas Speicher auf Vorrat reserviert (Capacity ist also immer Count plus Etwas). StringList macht das eigentlich automatisch, ich glaube 4, 8, 16 , usw. Wenn also vier Strings in StringList drin sind, wird für acht weitere Strings der Speicher reserviert. Sind die voll, für die nächsten 16 Strings usw. Wie gesagt, dass passiert automatisch, so dass man Capacity kaum selbst nutzt. Interessant wird das erst wenn man vorher weiß, dass man z. B. 1000 Strings einfügt. Statt also, dass TStringList alle paar Strings eine Pause machen muss um die Kapazität zu erhöhen, kann man mit Capacity gleich selbst für 1000 Strings den Speicher reservieren. Dafür ist es gedacht. Es wird eigentlich automatisch genutzt, man kann es unter bestimmten Bedingungen aber auch selbst nutzen.

Geändert von Popov (29. Dez 2012 um 17:27 Uhr)
  Mit Zitat antworten Zitat