![]() |
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 |
AW: 32 Bit, TStringList, Textdatei mit 30Mio. Zeilen
19 Mio. Zeilen und wie viel MB hat die Datei?
|
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?
|
AW: 32 Bit, TStringList, Textdatei mit 30Mio. Zeilen
Noch bessser in einem Stream.
|
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? :?
|
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 |
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:
|
AW: 32 Bit, TStringList, Textdatei mit 30Mio. Zeilen
Zitat:
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:
|
AW: 32 Bit, TStringList, Textdatei mit 30Mio. Zeilen
Zitat:
|
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 10:01 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