[D5] Kapazität von TStringList

Hi @ all,

wie groß kann eigentlich ein TStringList werden ?

Gilt da auch die Grenze von 64K ?

CU, Dirk

Hi Dirk,

wie groß kann eigentlich ein TStringList werden ?

Gilt da auch die Grenze von 64K ?

warum probierst Du’s nicht einfach aus? Wenn eine StringList das

FOR k := 0 TO 999 DO 
 begin
 StringList.Add('0123467...' [80 Zeichen langer String])
 end;

abkann, dann ist ihr Inhalt danach genau 80000 Bytes groß, und damit größer als 64 KByte.

Und wenn sie sogar das

FOR k := 0 TO 999999 DO 
 begin
 StringList.Add('Test')
 end;

noch verkraftet, kommt sie auch mit einer Zeilenzahl von 100’000 und mit mindestens 100’000*4 = ca. 400 KByte großen Inhalten zurecht.

Mit beiden Tests gibt es übrigens keine Probleme, weil die Begrenzung für derlei Strukturen bei Delphi i. a. bei 2 G (oder waren es 4 G?) liegt. Die einzige Komponente, bei der es eine 64 K-Grenze gibt, ist meines Wissens nach TMemo (Du kannst obigen Test ja mal mit TMemo machen), weshalb man TMemo nur für ganz einfache Sachen nehmen sollte. Zur Darstellung und Bearbeitung umfangreicherer Texte ist TRichEdit die Komponente der Wahl. TRichEdit unterliegt keiner 64 K-Grenze.

Gruß
Martin

ReHi,

warum probierst Du’s nicht einfach aus? Wenn eine StringList

Ich arbeite doch nicht für Bill! Ich möchte ganz gerne vorher die Grenzen eines Programmes kennen :smile:

CU Dirk

Hallo,

etwas einfacher als die Methode von Martin kannst du das so testen:

MyList.BeginUpdate;
MyList.LoadFromFile('MeineGrosseDatei');
MyList.EndUpdate;

MeineGrosseDatei ist irgendeine fette ASCII-Datei.
Dabei wirst du feststellen, dass du einige zig-Megabyte laden kannst (übrigens auch in TMemo). Allerdings wird während des Ladens der dreifache Speicherplatz benötigt.

Gruß, Niels

Hallo Niels,

Dabei wirst du feststellen, dass du einige zig-Megabyte laden
kannst (übrigens auch in TMemo).

ich hab’s gerade getestet und festgestellt, daß Du recht hast, wenn das Betriebssystem Win XP ist. Hier gibt es das besagte Limit offensichtlich nicht mehr, was mir nicht bekannt war. In der Delphi-Online-Hilfe habe ich unter „TMemo“ folgenden Hinweis dazu gefunden: „Note: Under Win 9x, there is a limit of 64k of text for this control“.

Allerdings wird während des
Ladens der dreifache Speicherplatz benötigt.

Das wußte ich auch noch nicht.

Mit freundlichem Gruß
Martin