Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ReadLn & TStringList (https://www.delphipraxis.net/109776-readln-tstringlist.html)

Andi1985 7. Mär 2008 12:30


ReadLn & TStringList
 
Hallo,

ich benutzte derzeitig AssignFile() und ReadLn() sowie Arrays um eine 4,7 MB große Datei auszulesen.

Allerdings ist dies ziemlich langsam im gegensatz zu der Funktion LoadFromFile von der TStringList.

Noch geht das einlesen der 4,7 MB großen Datei mit ungefähr 80.000+ Datensätzen / Zeilen gut, aber
dies kann sich ja bei der Komponente ändern.

Nun ist meine Frage wie groß die Kapazität einer TStringList ist und
ob ich gefahrenlos noch größere Dateien einlesen kann?

mfg,
Moggy

marabu 7. Mär 2008 12:41

Re: ReadLn & TStringList
 
Hallo,

der Vorteil von ReadLn() ist, dass die Datei zeilenweise verarbeitet wird und nicht allzuviel Hauptspeicher belegt wird. Mit SetTextBuf() kann der Lesepuffer vergrößert werden, was die eine deutliche Beschleunigung bringt.

Die StringList liest die komplette Datei ein. Kapazitätsgrenzen musst du nicht fürchten, wenn du genügend Hauptspeicher zur Verfügung hast.

Grüße vom marabu

Andi1985 7. Mär 2008 12:45

Re: ReadLn & TStringList
 
Vielen dank!

RavenIV 7. Mär 2008 12:45

Re: ReadLn & TStringList
 
Zitat:

Zitat von Mogtar
Nun ist meine Frage wie groß die Kapazität einer TStringList ist und
ob ich gefahrenlos noch größere Dateien einlesen kann?

Da Capacity und Count vom Typ Integer sind, kannst Du Dir selber ausrechnen, wie viele Einträge eine StringList haben darf.

Muetze1 7. Mär 2008 16:02

Re: ReadLn & TStringList
 
Zitat:

Zitat von RavenIV
Da Capacity und Count vom Typ Integer sind, kannst Du Dir selber ausrechnen, wie viele Einträge eine StringList haben darf.

Da muss ich bei u.a. Delphi 5 widersprechen: maximale TStringList Eintragsanzahl ist dort MaxListSize. Und das ist definiert als

Delphi-Quellcode:
MaxListSize = Maxint div 16;
Das ergibt dann 134.217.727 Einträge.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz