AGB  ·  Datenschutz  ·  Impressum  







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

zeilen in txt datei zählen

Ein Thema von G G · begonnen am 26. Jan 2006 · letzter Beitrag vom 27. Jan 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: zeilen in txt datei zählen

  Alt 26. Jan 2006, 23:02
Also wenn die Anzahl der Zeichen pro Zeile konstant ist, einfach mit FindFirst die Datei finden, und sich vom TSearchRec der rauskommt die Dateigröße anschauen und die durch die Zeichen pro Zeile teilen.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: zeilen in txt datei zählen

  Alt 26. Jan 2006, 23:05
So, habe nochmal was anderes probiert...

Vorschlag gelöscht wegen Nicht-Beachtung
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: zeilen in txt datei zählen

  Alt 26. Jan 2006, 23:18
Ich habe gerade mal nachgesehen was denn so in den Sourcen von TListBox beim Aufruf von LoadFromFile passiert.

Es wird ein TFileStream erzeugt, welcher den gesamten Text einliest, welcher auf #10 bzw #13 geparst wird und der der Items Eigenschaft hinzugefügt wird.

Ich hab mir dann angeschaut wie TFileStream denn dann den Inhalt der Datei liest und festgestellt, dass diese sich einer kernel32 Funktion, nämlich ReadFile bedient.

Leider habe ich keine Implementierung zu Readln gefunden, da weiß anscheinend nur der Compiler selbst da dort eingebaut, wie diese funktionieren. Es wird vermutlich aber auch auf #10 bzw. #13 geparst werden.

Demzufolge könntest Du das ganze auch in einen Filestream schreiben und ihn rückwärts durchgehen bis du 15 mal #10 bzw. #13 gefunden hast, die Strings dazwischen entsprechen dann deinen Zeilen.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: zeilen in txt datei zählen

  Alt 26. Jan 2006, 23:21
@GuenterS: was mache ich in meinem Beispiel?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#15

Re: zeilen in txt datei zählen

  Alt 26. Jan 2006, 23:32
Zitat von GuenterS:
und wie lang hält dich das Laden in eine Stringlist auf?
oder wieviel mal schneller wäre es ohne gauge?
Beides ist irrelevant. Sollten aber wirklich nur die letzten Zeilen wichtig sein, dann würde ich mir mal ernsthat die Downto-Methode von Guenther ansehen. Zeit / Speicherverbrauch spielt wohl kaum eine Rolle. TStringlist hat allerdings noch folgende Nachteile : dran denken, Speicher von Hand wieder freizugeben, sofern das Programm danach weiterläuft und halt Speicherplatz. Der Vorschlag mit Dateigröße ist zwar auch gut, mir aber nicht wasserdicht genug.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#16

Re: zeilen in txt datei zählen

  Alt 27. Jan 2006, 09:08
Wieso brauchst du für die Fortschrittsanzeige unbedingt die Zeilenanzahl? Dafür reicht doch die Größe der Datei. Bei jeder mit Readln eingelesenen Zeile hast du mit der Zeilenlänge + 2 (CR+LF) die Anzahl der eingelesenen Bytes und kannst damit den Fortschritt entsprechend weiterrechnen. Dabei ist es vollig irrelevant, wieviele Zeilen in der Datei sind oder ob die alle gleich lang sind.
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#17

Re: zeilen in txt datei zählen

  Alt 27. Jan 2006, 13:11
Ist das da für mich ?

Zitat von tomsel:
Wieso brauchst du für die Fortschrittsanzeige unbedingt die Zeilenanzahl? Dafür reicht doch die Größe der Datei. Bei jeder mit Readln eingelesenen Zeile hast du mit der Zeilenlänge + 2 (CR+LF) die Anzahl der eingelesenen Bytes und kannst damit den Fortschritt entsprechend weiterrechnen. Dabei ist es vollig irrelevant, wieviele Zeilen in der Datei sind oder ob die alle gleich lang sind.
Viele Wege führen nach Rom, aber welcher ist der einfachste ? Bei mir sind die einzulesenden Dateien teilweise sehr groß. Die einzelnen Zeilen sind auch sehr lang und müssen zerstückelt werden und dann in die DB geschrieben werden. Das kann dauern. Dabei ist egal, ob 50 Min. oder 53. Jetzt wollte ich die zeilenanzahl mal sehen und habe die Datei mit readln gelesen. < 5 Sek. Was soll ich denn dann noch mit einer Stringliste rumfuchteln oder die Zeilenlänge berechnen (ja, Zeilen sind alle gleich lang) ? Das nächste ist die Effizienz. Statt meiner 5 Zeilen bräuchte ich dann 10-15. Außerdem : lasse ich die Zeilenlänge außer acht, dann kann ich den Source unverändert für andere Dateien so verwenden. Dateiname abändern und fertig. Wie gesagt, der Einsatzzweck entscheidet.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 08:47 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