AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Text-Dateien hintereinander auslesen

Ein Thema von moperswings · begonnen am 7. Feb 2007 · letzter Beitrag vom 9. Feb 2007
Antwort Antwort
Seite 1 von 2  1 2      
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#1

Text-Dateien hintereinander auslesen

  Alt 7. Feb 2007, 08:14
Hallo,

ich habe drei Textdateien, deren Zeilen ich zähle. Jetzt brauche ich aber die Gesamtsumme aller Zeilen.
Meine Frage:
Wie läuft das mit der Rechenperformance?
Kann bzw. sollte ich mit ruhigem Gewissen auf Knopfdruck drei Dateien hintereinanderer öffnen, auslesen, schliessen und die Ergebnisse den Labels zuweisen und darauf vertrauen, das die heutigen Rechner das schaffen und mir mein Programm nicht abstürzt?
Gibt es eine kb-Grenze pro Datei, die ich bei solchen Aktionen nicht überschreiten sollte?

Hoffe auf Eure Erfahrungen,

Viele Grüsse, moperswings
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Text-Dateien hintereinander auslesen

  Alt 7. Feb 2007, 08:29
Moin,

eine Grenze gibt es mines Wissens nicht. Grundsätzlich ist das mit der Performance jedoch relativ. Öffne doch einfach eine Datei, ermittel die Zeilen, schließe sie wieder und nehm dir die nächste vor. das passtr alles gut in eine Schleife. Ich gehe jetzt mal davon aus, dass du Textdateien meinst (wegen Zeilen). Wenn ich zeilenweise auf Textdateien zugreifen will benutze ich immer TStringList. Ob das nun schnell ist war bei der Größe von Dateien bei mir bis jetzt nicht so relevant. Es lässt sich aber einfach händeln.

Funzen würde das so, Stringlist creieren. In Schleife LoadfromFile aufrufen, Count ermitteln und merken, Clear, nächstes File. Das bis alle abgearbeitet sind und dann Stringliste frei geben.

Gruß oki
  Mit Zitat antworten Zitat
smudo

Registriert seit: 6. Sep 2005
Ort: Cottbus
362 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Text-Dateien hintereinander auslesen

  Alt 7. Feb 2007, 09:12
Da die Frage nach der Performance war, würde ich nicht die komfortable Methode mit den Stringlisten, sondern den ersteren Vorschlag von oki verwenden.

Edit: Ich musste letztens mit einem SQL-Skript mit 2,5 Mio Zeilen arbeiten, da ist die Stringliste mit Out Of Memory ausgestiegen. Das direkte verwenden der Datei hat problemlos funktioniert.
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Text-Dateien hintereinander auslesen

  Alt 7. Feb 2007, 09:19
Vielleicht auch so:

Delphi-Quellcode:
var
  dataFile: TextFile;
  line : String;
  i: Byte;
  LineCount: Int64;

begin
  LineCount := 0;
  for i:=0 to FileNames.count -1 do
    begin
      assignFile(dataFile,FileNames[i]);
      reset(dataFile);
         while not eof(dataFile) do
           begin
             readln(dataFile,line);
             inc(LineCount);
           end;
      CloseFile(dataFile);
    end;
  end;
  ShowMessage('Zeilenzahl: 'Int64ToStr(LineCount));
end;
- benötigt kaum Speicher

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#5

Re: Text-Dateien hintereinander auslesen

  Alt 7. Feb 2007, 13:49
Ich habe es in etwa mit dem Code probiert, den Klaus vorgeschlagen hat - nur dass ich halt alle drei Datensätzen hintereinander öffne, auslese und schliesse.
Läuft alles ohne Probleme!
Es gibt aber wahrscheinlich auch elegantere Wege als meinen, um das Problem zu lösen!

Vielen Dank und viele Grüsse, moperswings
  Mit Zitat antworten Zitat
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Text-Dateien hintereinander auslesen

  Alt 9. Feb 2007, 13:38
Zitat von oki:

Funzen würde das so, Stringlist creieren. In Schleife LoadfromFile aufrufen, Count ermitteln und merken, Clear, nächstes File. Das bis alle abgearbeitet sind und dann Stringliste frei geben.
Eine Frage zum LoadFromFile. Ich habe ein ähnliches Problem:

Wenn ich mehrere Dateien, die nur Text enthalten, in einer Schleife in einer! StringList
zusammen führen möchte, hängt dann das LoadFromFile die Daten nacheinander in die Liste
oder wird das StringList mit jeder neuen Datei wieder auf null zurück gesetzt??
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Text-Dateien hintereinander auslesen

  Alt 9. Feb 2007, 13:40
Aus der Hilfe:

Zitat:
procedure LoadFromFile(const FileName: string); virtual;

Description

Call LoadFromFile to fill the list of the TStrings object from the file specified by FileName. Each line in the file, as indicated by carriage return or linefeed characters, is appended as a string in the list.

Note: LoadFromFile uses the Add method to add the strings that are read from the file.
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Text-Dateien hintereinander auslesen

  Alt 9. Feb 2007, 13:44
... also ich dachte, der leert den TStrings immer vorm einlesen? ... mal nachschaun ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Text-Dateien hintereinander auslesen

  Alt 9. Feb 2007, 13:46
Ich vermute auch das es die Liste vorher leert. Hatte gestern Abend nämlich das
Problem, das immer nur die letzte Datei in die StringList eingelesen wurde....

Ansonsten danke Klaus Werde das noch mal Zuhause checken.
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Text-Dateien hintereinander auslesen

  Alt 9. Feb 2007, 18:38
Zitat von Gruber_Hans_12345:
... also ich dachte, der leert den TStrings immer vorm einlesen? ... mal nachschaun ...
Also LoadFromStream und LoadFromFile leeren die TStrings vorher. Da muss ich mir dann etwas anderes einfallen lassen.
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:49 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