![]() |
zeilen in txt datei zählen
hallo wie kann cih denn zeilen von einer text datei zählen
also irgdnwie mit AssignFile (f, path); usw aber ich hab keine ahnung wie man dann herausfindet was die letzte zeile ist so dass ma z.B die mit readln auslesen kann muss man ja wissen welche nummer die hat? vielen dank |
Re: zeilen in txt datei zählen
Also ein simpelsten wäre es doch, den Text einfach in eine Stringlist / Memo zu laden und dann über count-1 das letzte Array der Liste ansprechen.
Gruß Pfoto |
Re: zeilen in txt datei zählen
Nein, du musst nicht die Zeilennummer wissen um mit readln eine Zeile auszulesen.
Readln liest zeile für zeile ein. eine nach der anderen. Ob Du am Ende bist kannst Du mit Eof abfragen. |
Re: zeilen in txt datei zählen
Stringlist ist unnötig. Wozu das ? In einem Programm habe ich eine Gauge, um den Fortschritt anzuzeigen. Dazu brauche ich aber die Zeilenanzahl einer nicht kleinen Datei (1.000.000 Zeilen ?). Die paar Zeilen hier halten mich ca. 0,1 Sek. auf :
Delphi-Quellcode:
AssignFile (k,Dateiname');
reset (k); WHILE NOT EOF (k) DO BEGIN ZeilenAnzahl := ZeilenAnzahl + 1; readln (k); END; gaugeFortschritt.MaxValue := ZeilenAnzahl; |
Re: zeilen in txt datei zählen
und wie lang hält dich das Laden in eine Stringlist auf?
oder wieviel mal schneller wäre es ohne gauge? |
Re: zeilen in txt datei zählen
hm ich schein zu blöd zu sein für sowas, also ich hab mri jetzt nen code erarbeitet aber der macht ncih so des was ich will:
Delphi-Quellcode:
f:file of byte;
path : string; a,t : integer; begin idone :=id.receiver.Caption; path := ExtractFilePath(application.ExeName)+'logs\'+idone+'.txt'; if fileexists(path)then begin AssignFile (f, path); Reset (f); a := 0; seek(f,0); while not eof(f) do begin readln(f,a); a := a+1; end; while t < 15 do begin id.listbox1.items.add(ReadLn (f,a)); a := a+1; t := t+1; end; closefile(f); hm nur dies geht nicht. Also zur erklärung a soll im enfeffekt die letzte zeilenzahl angeben, und dann die schleife danach zieht die letzten 16 zeilen in eine listbox. nur des will leider nicht kann mir da wer wieterhelfen.Vielen dank |
Re: zeilen in txt datei zählen
Versuch mal folgendes...
Delphi-Quellcode:
war nicht gewünscht
|
Re: zeilen in txt datei zählen
warum nicht so?
Delphi-Quellcode:
procedure LoadLast15LinesOfFile(aFileName: string; aListBox: TListbox);
var i: integer; begin aListBox.Sorted := false; aListBox.Items.LoadFromFile(aFileName); for i := aListbox.Count - 1 downto 15 do aListBox.Items.Delete(i); end; |
Re: zeilen in txt datei zählen
hm ja guenthers meinst du nich dass indem man alles reinläd sehr viel resocuren verbraucht werden, bei son paar mb wird des dochs icher paar sekunden brauchen, oder geht des laden in eine listbox so schnell?
hm und omata dein tipp würd doch einfahc alle hinzufüen. Aber was ich eigentlcih iwll ist ja nur die hinteren. Deswgeen woll tich ja wissen wieviel zeilen insgesamt und dnan mit readln diese die ich will dann auslesen. und nicht mit listbox einlesen um halt rechenzeit zu sparen? wenn dies irgdnwie möglich ist |
Re: zeilen in txt datei zählen
Tja bis jetzt war ja nicht bekannt, dass es sich um sooo große Textdateien handelt.
Wenn Du weißt wieviele Zeichen sich in einer Zeile befinden und das immer exakt gleich viele sind, könntest Du hergehen, und dir ausrechnen, wohin Du mit Seek springen musst. Ansonsten musst Du entweder alles laden oder zuerst mal zählen gehen, wieviel Zeilen vorhanden sind. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 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 by Thomas Breitkreuz