Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi zeilen in txt datei zählen (https://www.delphipraxis.net/61831-zeilen-txt-datei-zaehlen.html)

G G 26. Jan 2006 21:05


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

Pfoto 26. Jan 2006 21:09

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

GuenterS 26. Jan 2006 21:11

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.

Hansa 26. Jan 2006 21:25

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;

GuenterS 26. Jan 2006 21:27

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?

G G 26. Jan 2006 21:29

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

omata 26. Jan 2006 21:38

Re: zeilen in txt datei zählen
 
Versuch mal folgendes...

Delphi-Quellcode:
war nicht gewünscht

GuenterS 26. Jan 2006 21:39

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;

G G 26. Jan 2006 21:45

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

GuenterS 26. Jan 2006 22:00

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 23:10 Uhr.
Seite 1 von 2  1 2      

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