Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zeilen einer Datei zählen (https://www.delphipraxis.net/186594-zeilen-einer-datei-zaehlen.html)

Nugi89 15. Sep 2015 12:48

Zeilen einer Datei zählen
 
Hallo habe folgendes Problem,
hab mir eine Konsolenanwendung erstellt in der ich einen Dateipfad angeben und die Zeilen der Datei zählen kann.
Das Programm zählt immer nur eine Zeile und mehr nicht.

Hier mal der Code:
Delphi-Quellcode:
uses
  SysUtils,
  Classes;

var
 path: string;
 zeilen: integer;
 datei: TStringList;
begin
 writeln('Gebens Sie den Dateipfad an oder Exit um zu beenden:');
 Readln(path);
 datei:= TStringList.Create;

 if FileExists(path) = true then
 begin
   writeln('Existiert!');
   datei.LoadFromFile(path);
   zeilen:= datei.Count;
   writeln('Die Datei hat ' + IntToStr(zeilen) + ' Zeilen!');
 end
 else
 begin
   writeln('Existiert nicht!');
 end;

 if path = 'Exit' then
 begin
   Halt;
 end;

 Readln;
end.
Zählt datei.count nicht eigentlich alle Zeilen?
Vielleich kann mir irgend wer helfen.

haentschman 15. Sep 2015 12:57

AW: Zeilen einer Datei zählen
 
Hallöle...:P
Zitat:

Zählt datei.count nicht eigentlich alle Zeilen?
Das kommt auf die Datei an. Wenn z.B. in ihr keine Zeilenumbrüche sind gibt es nur eine Zeile. Kannst du zwecks Analyse so eine Datei (klein) anhängen?

Dalai 15. Sep 2015 12:57

AW: Zeilen einer Datei zählen
 
Hat die Datei denn mehr als eine Zeile, die durch CRLF (#13#10) voneinander getrennt sind?

Übrigens muss man sich dafür nicht unbedingt selbst ein Programm schreiben, denn grep (gibt's auch für Windows) kann sowas indirekt:
Code:
grep -c "." pfad\zur\datei
MfG Dalai

Rollo62 15. Sep 2015 13:13

AW: Zeilen einer Datei zählen
 
Wenn Zeilenumbrücke da sind könnte es trotzdem sein das sie nicht passen.
Mit Delimiter kann man das dem StringGrid einstellen.
Danach sollte es dann eigentlich funktionieren.

Edit:
Sorry: LineBreak ist der richtige Link

Rollo

Bjoerk 15. Sep 2015 13:13

AW: Zeilen einer Datei zählen
 
Alternative wäre auch der TSJMmfFileReader von Sebastian Jänicke. Ist schnell und man kann den Delimiter einstellen auch (voreingetsllt ist #$000D (#13)).

Nugi89 15. Sep 2015 13:15

AW: Zeilen einer Datei zählen
 
die Datei hat mehrere Zeilen. Hat es auch mit anderen Dateien probiert und es kommt immer wieder nur eine Zeile raus.

Und danke für den Windows-Tipp.:thumb: Hab ich noch nicht gewusst.

Luckie 15. Sep 2015 14:09

AW: Zeilen einer Datei zählen
 
Woher weißt du denn, dass sie mehrere Zeilen hat?

Nugi89 15. Sep 2015 14:20

AW: Zeilen einer Datei zählen
 
Ich hab sie mir zum testen erstellt. Hab mir dazu einen Text von Wikipedia kopiert mit ca 20 Zeilen.
Dann sollte das Programm doch auch 20 Zeilen zählen oder?

Luckie 15. Sep 2015 14:36

AW: Zeilen einer Datei zählen
 
Öhm. Du hast nicht zufällig den automatischen Zeilenumbruch im Texteditor aktiviert? Fließtext von Webseiten hat keine festen Zeilenumbrüche.

Nugi89 15. Sep 2015 14:45

AW: Zeilen einer Datei zählen
 
nee glaube der Zeilenumbruch fehlt. Ich werde das mal überprüfen.
Ist den mein Quellcode soweit korrekt?

hab jetzt noch eine for-Schleife eingebaut und hab immer noch das selber Problem.

Hier nochmal mein Code:
Delphi-Quellcode:
uses
  SysUtils,
  Classes;

var
 path: string;
 zeilen, i: integer;
 datei: TStringList;
begin
 writeln('Gebens Sie den Dateipfad an oder Exit um zu beenden:');
 Readln(path);
 datei:= TStringList.Create;
 zeilen:= 0;
 
 if FileExists(path) = true then
 begin
   writeln('Existiert!');
   datei.LoadFromFile(path);
   for i:= 0 to datei.Count -1 do
   begin
     zeilen:= zeilen +1;
   end;
   writeln('Die Datei hat ' + IntToStr(zeilen) + ' Zeilen!');
 end
 else
 begin
   writeln('Existiert nicht!');
 end;

 if path = 'Exit' then
 begin
   Halt;
 end;

 Readln;
end.

implementation 15. Sep 2015 14:48

AW: Zeilen einer Datei zählen
 
Zitat:

Zitat von Dalai (Beitrag 1315865)
denn grep (gibt's auch für Windows) kann sowas indirekt

Wenn man sich schon Standard-UNIX-Tools rüberholt, dann bitte
Code:
wc -l pfad\zur\datei
The right tool for the right task und so ;)

baumina 15. Sep 2015 14:57

AW: Zeilen einer Datei zählen
 
Nimm einfach NodePad, schreib 1[Enter-Taste] 2[Enter-Taste] 3[Enter-Taste] rein, speicher das als txt-Datei ab und versuchs damit. Die for-Schleife ist für die Katz.

Uwe Raabe 15. Sep 2015 15:00

AW: Zeilen einer Datei zählen
 
Zitat:

Zitat von Nugi89 (Beitrag 1315882)
hab jetzt noch eine for-Schleife eingebaut und hab immer noch das selber Problem.

Die for-Schleife löst das Problem ja nicht, sondern macht nur dein Programm langsamer und die CPU heißer.

Gib dem Programm doch einfach mal die Source-Datei deines eigenen Programms zum zählen.

Nugi89 15. Sep 2015 15:05

AW: Zeilen einer Datei zählen
 
Ok die for-Schleife ist draußen.
Hab mir jetzt ein Textdokument erstellt mit 10 Zeilen.
Jetzt kommt das Problem das er das Dokument nicht findet.

baumina 15. Sep 2015 15:06

AW: Zeilen einer Datei zählen
 
8-) damit wären wir genauso weit wie hier

Dalai 15. Sep 2015 20:39

AW: Zeilen einer Datei zählen
 
Zitat:

Zitat von implementation (Beitrag 1315884)
Wenn man sich schon Standard-UNIX-Tools rüberholt, dann bitte
Code:
wc -l pfad\zur\datei
The right tool for the right task und so ;)

Ja, im Prinzip hast du recht. Ich weiß jetzt nicht, ob's wc auch für Windows gibt, bei grep weiß ich es definitiv, weil ich es selber häufiger benutze (weil das Windows find nix taugt). Von daher kenne ich diese Variante als billigen Ersatz für wc.

MfG Dalai

Luckie 15. Sep 2015 20:52

AW: Zeilen einer Datei zählen
 
Dann gib deinem Programm den korrekten Pfad zur Datei. :roll:

Geda 16. Sep 2015 06:28

AW: Zeilen einer Datei zählen
 
Um noch einmal auf den Vorschlag vom Anfang zurückzukommen: Kannst Du eine Beispieldatei zur Verfügung stellen - mit dem Hinweis, wie viele Zeilen es sein sollten?

Michael II 16. Sep 2015 08:03

AW: Zeilen einer Datei zählen
 
Wenn du noch keinen hast, dann wird es Zeit: Lade einen HEX Editor runter.

Öffne deine TXT-Datei im HEX Editor und prüfe deren Inhalt (Zeichen für Zeilenumbruch suchen).

Dann weisst du ganz genau, was dein Delphi Programm einliest.

Und wie's bereits gewünscht wurde: Es macht erst richtig Sinn über das Problem zu diskutieren, wenn du die Datei z.V. stellst.

Viel Glück...

Luckie 16. Sep 2015 09:25

AW: Zeilen einer Datei zählen
 
Rt hat ja nun wohl mittlerweile eine Datei mit Zeilenumbrüchen.

p80286 16. Sep 2015 11:59

AW: Zeilen einer Datei zählen
 
Wenn er Bauminas Vorschlag genutzt hat, dann ja.

@Nugi89
Delphi-Quellcode:
if FileExists(path) = true then
begin
ist nicht so gelungen,

Delphi-Quellcode:
if FileExists(path) then
  begin
ist voll und ganz ausreichend.

Gruß
K-H

mkinzler 16. Sep 2015 12:37

AW: Zeilen einer Datei zählen
 
Nicht nur weniger aufwendig uach weniger fehleranfällig, da True nicht immer gleich True ist.

(True ist nicht False; also <> 0)

BadenPower 16. Sep 2015 17:04

AW: Zeilen einer Datei zählen
 
Zitat:

Zitat von Nugi89 (Beitrag 1315882)
Ist den mein Quellcode soweit korrekt?

Nein.

1. Die Stringliste wird nicht freigegeben.

2. Wenn Du "Exit" eingibst, dann prüft Dein Programm erst, ob es die Datei "Exit" gibt und gibt dann "Existiert nicht!" aus bevor es zum Programmende kommt, ausser es gibt eine Datei "Exit" dann erhälst Du die Zeilenanzahl vor dem Beenden des Programms.

Nugi89 25. Sep 2015 13:53

AW: Zeilen einer Datei zählen
 
Danke für die Hilfe
Hatte meine Fehler selber gefunden, hatte den Wald vor lauter Bäumen nicht gefunden:oops:

Rollo62 28. Sep 2015 13:18

AW: Zeilen einer Datei zählen
 
Du bist mein Held ...
Welche Fehler waren denn das ?

Rollo


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:33 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