![]() |
Anzahl Zeilen in einem Textfile
Hallo
Ich möchte die Anzahl Zeilen in einem Textfile auslesen (Typ: textfile). Sollte das nicht mit
Delphi-Quellcode:
funktionieren?? Mir werden aber immer genau die Hälfte der Zeilen ausgegeben.... :gruebel:
anzZeilen := FileSize(filename);
Gruss Tom |
Re: Anzahl Zeilen in einem Textfile
also laut Hilfe
Zitat:
|
Re: Anzahl Zeilen in einem Textfile
hmm... das heisst alle Zeilen mit ReadLn einlesen und inkrementieren bis EoF erreicht?
|
Re: Anzahl Zeilen in einem Textfile
Ist vielleicht umständlich, aber dürfte funzen :
Delphi-Quellcode:
Gruß
var
txt: textfile; anzahl: integer; begin AssignFile(txt, 'xyz.txt'); reset(txt); while not EOF(txt) do begin inc(anzahl); end; CloseFile(txt); ShowMessage(IntToStr(anzahl)); end; MarcusB |
Re: Anzahl Zeilen in einem Textfile
Hi,
Probier mal diese Funktion:
Delphi-Quellcode:
function TextLineCount_BufferedStream(const Filename: TFileName): Integer;
const MAX_BUFFER = 1024 *1024; var oStream: TFileStream; sBuffer: string; iBufferSize: Integer; iSeek: Integer; bCarry: Boolean; begin Result := 0; bCarry := False; oStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); try SetLength(sBuffer, MAX_BUFFER); repeat iBufferSize := oStream.Read(sBuffer[1], MAX_BUFFER); if iBufferSize <= 0 then break; {Skip LFs that follow a CR - even if it falls in seperate buffers} iSeek := 1; if bCarry and (sBuffer[1] = #10) then Inc(iSeek); while iSeek <= iBufferSize do begin case sBuffer[iSeek] of #10: Inc(Result); #13: if iSeek = iBufferSize then Inc(Result) else if sBuffer[iSeek + 1] <> #10 then Inc(Result) else begin Inc(Result); Inc(iSeek); end; end; Inc(iSeek); end; {Set carry flag for next pass} bCarry := (sBuffer[iBufferSize] = #13); until iBufferSize < MAX_BUFFER; finally FreeAndNil(oStream); end; end; |
Re: Anzahl Zeilen in einem Textfile
Hallo,
wie wäre es damit?
Delphi-Quellcode:
var sl:TStringList;
... sl:=TStringList.Create; try sl.LoadFromFile('c:\test.txt'); ShowMessage(Format('Datei enthält %d Zeilen.', [sl.Count])); finally sl.Free; end; // try |
Re: Anzahl Zeilen in einem Textfile
Jo, bei Textfiles empfiehlt der Apotheker TStringList. :wink:
@MarcusB Dein Code zählt sich tot. 8) |
Re: Anzahl Zeilen in einem Textfile
Danke. Das mit der Stringliste hört sich ganz gut an... Jetzt dazu noch ein kleines Problem: Wie kann ich eine Strinliste mit dem Inhalt einer geöffneten Datei befüllen? Also so in etwas:
Delphi-Quellcode:
Oder muss ich das File erst schliessen? Oder jede Zeile mit ReadLn aus File lesen (ist etwas umständlich nur um an die Anzahl zu kommen....)
WriteLn(File,Text); //File befüllen
meineStringListe.ladeVon(File); //File in meineStrinListe laden anzahl := meineStringListe.count; //Zeilen zählen es dankt und grüsst Tom |
Re: Anzahl Zeilen in einem Textfile
Gollum hat mit seinem Beitrag die Frage bereits, mit Code-Beispiel, beantwortet :wink:
|
Re: Anzahl Zeilen in einem Textfile
:gruebel: Gollums Datei ist aber geschlossen und nicht wie meine Datei geöffnet... Geht das trotzdem irgendwie?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 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-2025 by Thomas Breitkreuz