Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   32 Bit, TStringList, Textdatei mit 30Mio. Zeilen (https://www.delphipraxis.net/186612-32-bit-tstringlist-textdatei-mit-30mio-zeilen.html)

hoika 16. Sep 2015 14:56

32 Bit, TStringList, Textdatei mit 30Mio. Zeilen
 
Hallo,
für einen Import einer Textdatei (vordefiniertes Format)
lade ich diese Textdatei per StringList.LoadFromFile.

Hier schmiert er mir mit "Arbeitsspeicher voll" ab.
Die Lösung per TextFile bringt es auf 19 Mio. Einträge.

Gibt es eine fertige Alternative zur TStringList?

Ich will jetzt nicht den ganzen Code ändern,
der sequentiell durch die Liste läuft.

Danke


Heiko

Bernhard Geyer 16. Sep 2015 15:02

AW: 32 Bit, TStringList, Textdatei mit 30Mio. Zeilen
 
19 Mio. Zeilen und wie viel MB hat die Datei?

stahli 16. Sep 2015 15:14

AW: 32 Bit, TStringList, Textdatei mit 30Mio. Zeilen
 
Wäre das gute alte Text-File mit ReadLn vielleicht eine Alternative - oder wird da auch der gesamte Inhalt gepuffert?

mkinzler 16. Sep 2015 15:16

AW: 32 Bit, TStringList, Textdatei mit 30Mio. Zeilen
 
Noch bessser in einem Stream.

Luckie 16. Sep 2015 15:17

AW: 32 Bit, TStringList, Textdatei mit 30Mio. Zeilen
 
Und was kann der Nutzer mit 19 Millionen Zeilen anfangen, wenn er doch so wie so nur 50 sieht? :?

hoika 16. Sep 2015 15:20

AW: 32 Bit, TStringList, Textdatei mit 30Mio. Zeilen
 
Hallo,

Der Nutzer sieht gar nichts, der Code ist halt auf TStringList zugeschnitten, also wahlfreier Zugriff, nicht nur in einer Richtung.
Das ReadLn mit TextFile sorgt überhaupt erst mal, dass überhaupt etwas in die TStringList kommt.

Ich baue mir jetzt was auf Basis von array of String.

Heiko

Luckie 16. Sep 2015 15:24

AW: 32 Bit, TStringList, Textdatei mit 30Mio. Zeilen
 
Denkbar ungünstig eine visuelle Komponente zur Datenhaltung zu nutzen. Du hast ja gerade ein gutes Beispiel gegeben. :wink:

p80286 16. Sep 2015 15:28

AW: 32 Bit, TStringList, Textdatei mit 30Mio. Zeilen
 
Zitat:

Zitat von hoika (Beitrag 1315980)
Hallo,

Der Nutzer sieht gar nichts, der Code ist halt auf TStringList zugeschnitten, also wahlfreier Zugriff, nicht nur in einer Richtung.
Das ReadLn mit TextFile sorgt überhaupt erst mal, dass überhaupt etwas in die TStringList kommt.

Ich baue mir jetzt was auf Basis von array of String.

Heiko

Vielleicht wäre es sinnvoll, uns einmal zu schreiben was Du vorhast. Einen wahlfreien Zugriff auf 19 Mio.Zeilen halte ich für Blödsinn, 100 oder 1000 Zeilen Durchaus für realistisch.
Wenn Du z.B. ein Log verarbeiten willst, ist readln garnicht mal so dumm, dann werden überflüssige Zeilen z.B. gleich beim Einlesen verworfen.

Gruß
K-H

P.S.
Zitat:

Denkbar ungünstig eine visuelle Komponente zur Datenhaltung
TStringlist is visuell??

Bernhard Geyer 16. Sep 2015 15:28

AW: 32 Bit, TStringList, Textdatei mit 30Mio. Zeilen
 
Zitat:

Zitat von Luckie (Beitrag 1315983)
Denkbar ungünstig eine visuelle Komponente zur Datenhaltung zu nutzen. Du hast ja gerade ein gutes Beispiel gegeben. :wink:

Seit wann ist TStringList eine visuelle Komponente :gruebel:

hoika 16. Sep 2015 15:55

AW: 32 Bit, TStringList, Textdatei mit 30Mio. Zeilen
 
Hallo,
ich lese eine Datei in eine StringList ein.
Es ist eine BDT-Datei (Medizintechnik).
Sie besteht intern aus Blöcken (10-1000 Zeilen sind ein Block).
Ich suche mir bestimmte Blöcke (Block A) raus, mache was (Import),
fange wieder von vorn an für andere Blöcke, die erst nach dem Import der A-Blöcke gültig sind usw.

Ich will den Code nicht ändern.

Ich habe mir jetzt eine TLargeStringList=class(TStrings) gebaut, muss nur noch überall TStringList durch TStrings ersetzen und hoffen ...

Hauptziel: den Code nur minimal ändern.


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 Uhr.
Seite 1 von 4  1 23     Letzte »    

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