AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Textdatei auslesen - braucht zu viel Speicher?
Thema durchsuchen
Ansicht
Themen-Optionen

Textdatei auslesen - braucht zu viel Speicher?

Ein Thema von Zerolith · begonnen am 4. Mär 2005 · letzter Beitrag vom 4. Mär 2005
Antwort Antwort
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#1

Textdatei auslesen - braucht zu viel Speicher?

  Alt 4. Mär 2005, 15:34
Hallo!

ich habe eine Normale Textdatei wo in jeder Zeile ein wort steht.
diese lese ich mit Assignfile usw aus.

dann habe ich ein: TListe = array of String; ich mache also in der schleife (while not eof) jeweils ein:
Delphi-Quellcode:
Setlength(Liste, length(Liste)+1);
Liste[High(Liste)] := s (aktuelle zeile)
die DAtei ist 4 MB groß (ungepackt)

und ich brauche 1, sehr sehr lange das auszulesen und 2. bruacht das ganze mehrere Hundert MB Arbeitsspeicher (und ist noch nicht mal sonderlich weit.

mich würde interessierern warum? die DAtei hat doch nur 4 mb?

Bsp: ein wörterbuch bei openoffice ist genauso aufgebaut - und die laden ja auch nicht stundenlang am anfang die wörterbuch Datei in den Arbeitsspeicher. Wie kann man das geschickt lösen um später z.B. ein bestimmtes wort zu suchen? ohne 4 gb ram zu haben und einen langen ladeprozess?

danke, Daniel
Daniel
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#2

Re: Textdatei auslesen - braucht zu viel Speicher?

  Alt 4. Mär 2005, 15:44
Tritt der selbe Effekt auf, wenn du das ganze mit LoadFromFile in ne TStringList liest?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Textdatei auslesen - braucht zu viel Speicher?

  Alt 4. Mär 2005, 15:50
Delphi-Quellcode:
Setlength(Liste, length(Liste)+1);
Liste[Zählvariable] := s (aktuelle zeile)
Nicht eher so ?
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Textdatei auslesen - braucht zu viel Speicher?

  Alt 4. Mär 2005, 15:52
Bei dem Dynamischen Array läuft das IMHO so:
Jedesmal wenn du die Länge erhöhst legt er dieses Array jedesmal neu im Speicher anlegt, den alten wert reinkopiert...
Wenn du das nun zeile für Zeile machst, könnte das dann der der grund sein, vielleicht solltest du erst die Länge bestimmen und dann die werte reintun...

Jedenfalls wenn ich mich nicht irre...


Bye
Christian
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: Textdatei auslesen - braucht zu viel Speicher?

  Alt 4. Mär 2005, 15:52
Zitat von Neutral General:
Delphi-Quellcode:
Setlength(Liste, length(Liste)+1);
Liste[Zählvariable] := s (aktuelle zeile)
Nicht eher so ?
eh - nö? welche Zählervariable - so schreib ich immer in das gerade hinzugefügt Feld im Array.

Das mit der Stringlist probier ich schnell
Daniel
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Textdatei auslesen - braucht zu viel Speicher?

  Alt 4. Mär 2005, 15:54
Zitat von Kedariodakon:
Bei dem Dynamischen Array läuft das IMHO so:
Jedesmal wenn du die Länge erhöhst legt er dieses Array jedesmal neu im Speicher anlegt, den alten wert reinkopiert...
Wenn du das nun zeile für Zeile machst, könnte das dann der der grund sein, vielleicht solltest du erst die Länge bestimmen und dann die werte reintun...

Jedenfalls wenn ich mich nicht irre...


Bye
Das klingt interessant. Ist es möglich vor dem Durchlaufen der gesamten datei festzustellen wieviele Zeilen drin sind?
Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Textdatei auslesen - braucht zu viel Speicher?

  Alt 4. Mär 2005, 16:06
Wie gesagt, ich bin mir mit dieser Aussage nich wirklich sicher, bei Strings.

Zitat von Zerolith:
Das klingt interessant. Ist es möglich vor dem Durchlaufen der gesamten datei festzustellen wieviele Zeilen drin sind?
Word für Word auf #13#10 überprüfen oder besser gleich auf $0d0a und die dann zählen...
Vorrausgesetzt, es ist keine Datei im Unicode-Format...

Bye
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Textdatei auslesen - braucht zu viel Speicher?

  Alt 4. Mär 2005, 16:09
Zitat von Kedariodakon:
Bei dem Dynamischen Array läuft das IMHO so:
Jedesmal wenn du die Länge erhöhst legt er dieses Array jedesmal neu im Speicher anlegt, den alten wert reinkopiert...
Wenn du das nun zeile für Zeile machst, könnte das dann der der grund sein, vielleicht solltest du erst die Länge bestimmen und dann die werte reintun...

Jedenfalls wenn ich mich nicht irre...
Du irrst nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: Textdatei auslesen - braucht zu viel Speicher?

  Alt 4. Mär 2005, 16:15
Zitat von Kedariodakon:
Wie gesagt, ich bin mir mit dieser Aussage nich wirklich sicher, bei Strings.

Zitat von Zerolith:
Das klingt interessant. Ist es möglich vor dem Durchlaufen der gesamten datei festzustellen wieviele Zeilen drin sind?
Word für Word auf #13#10 überprüfen oder besser gleich auf $0d0a und die dann zählen...
Vorrausgesetzt, es ist keine Datei im Unicode-Format...

Bye
Nur so oder? dauert das nicht etwas lang?


auf jeden fall Danke - werde das Array von vornherein festlegen
Daniel
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 Uhr.
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