In Textdatei Prüfen wieviele Zeilen drin sind?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

blackmaster

Betreff: In Textdatei Prüfen wieviele Zeilen drin sind?

BeitragMo, Dez 25, 2006 11:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich hab da mal eine frage, wie kann ich herausfinden wieviele Zeilen meine Textdatei hat?
Also ich lade die Datei mit dem befehl ReadFile und möchte dann die anzahl der Zeilen anzeigen lassen.
Wäre sehr net wenn mir eine Helfen könnte.

Gruss Markus

skey-z

BeitragMo, Dez 25, 2006 11:18
Antworten mit Zitat
Benutzer-Profile anzeigen
du lässt mit dem Befehl Readline alle Zeilen durchgehen, bis eof zurückgeliefert wird, dabei zählst du nen Index hoch und schwups weist du wie viele Zeilen die Datei hat
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

blackmaster

BeitragMo, Dez 25, 2006 13:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke dir.
Ich hab das so versucht:

Code: [AUSKLAPPEN]
  Datei = ReadFile("Datei.txt")

  If Not Datei = 0 Then
    While Not Eof(Datei)
      TextAnzahl=TextAnzahl+1 ;zeile zählen
      For j=1 To TextAnzahl
        t.texte = New texte
        t\schriftart = schrift1
        t\tex$=ReadLine(Datei)
        t\text_x = 50
        t\text_y=i
        i=i+20
      Next
    Wend
    CloseFile(Datei)
  EndIf


der zeigt das aber nicht richtig an, ich habe 7 Texte in der Datei stehen aber der zeigt nur 4 an, habe ich vll was falsch gemacht?

Gruss Markus
 

timmeTheOnly

BeitragMo, Dez 25, 2006 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast es immer gemacht... Hier:

Code: [AUSKLAPPEN]


Datei = ReadFile("Datei.txt")

If Not Datei = 0 Then
  While Not Eof(Datei)
    TextAnzahl=TextAnzahl+1 ;zeile zählen
  Wend

  seekfile(datei,0)

  For j=1 To TextAnzahl
    t.texte = New texte
    t\schriftart = schrift1
    t\tex$=ReadLine$(Datei) ; Hier ist der Return ein String!
    t\text_x = 50
    t\text_y=i
    i=i+20
  Next
EndIf

CloseFile(Datei) ; Unbedingt hier! Überleg mal selbst!

 

blackmaster

BeitragMo, Dez 25, 2006 14:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke dir, wieso überlegen?
Ich kann doch die Datei erst wieder schließen wenn diese Datei besteht, daher:

Code: [AUSKLAPPEN]
If not Datei = 0 then
  closefile(Datei) ; erst schließen wenn die datei besteht, da ich ansonsten eine fehlermeldung erhalte "Stream does not exist"
endif


aber ich sehe dann keine Texte wenn ich es so mache, wieso?

Gruss Markus
 

timmeTheOnly

BeitragMo, Dez 25, 2006 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Also bei mir hat des immer gefunzt, auch wenn die datei nicht existierte...

MfG
 

blackmaster

BeitragMo, Dez 25, 2006 14:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Komisch, bei mir meckert der Compiler dann, wenn ich die Datei offne die nicht einmal existiert und gleich geschlossen wird...

Editiert: Also die anzahl stimmt jetzt, ich hab mal in der Datei nur zahlen rein geschrieben und wenn ich es dann öffnen möchte, dann kommen viele doppelte zahlen rein:

01
01
02
01
02
03
01
02
03
04
01
02
03
04
05
01
02
03
04
05
06

das soll eigentlich so angezeigt werden:

01
02
03
04
05
06

wisst ihr wieso die zahlen doppelt rein kommen?

hier mal der code:

Code: [AUSKLAPPEN]
  Datei = ReadFile("Datei.txt")

  If Not Datei = 0 Then
    While Not Eof(Datei)
      TextAnzahl=TextAnzahl+1
      SeekFile(Datei,0)
      For j=1 To TextAnzahl
        t.texte = New texte
        t\schriftart = schrift1
        t\text_red=0 : t\text_green=0 : t\text_blue=128
        t\tex$=ReadLine(Datei)
        t\text_x = 50
        t\text_y=i
        i=i+20
      Next
    Wend
    CloseFile(Datei)
  EndIf


Gruss Markus
 

timmeTheOnly

BeitragDi, Dez 26, 2006 10:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ja klar, denn du darfst ja nicht immer alle zeilen zählen...

Nimm das als Codeschnipsel. Ich habe es bewusst mal nicht auf deinen Code bezogen, dass du dabei auch was lernst:

Code: [AUSKLAPPEN]

...

while not eof(file)
   
    readline$(file)
    zeilen = zeilen + 1

wend

seekfile file, 0

for i = 0 to zeilen

    z.zeile = new zeile

    z\inhalt = readline$(file)

next


Ich hoffe du kannst damit was anfangen... Aber ich gebe dir noch eine schnellere und kürzere Alternative:

Code: [AUSKLAPPEN]

while not eof(file)

    z.zeile = new zeile
    z\inhalt = readline$(file)

wend


Fertig. Ich hoffe ich konnte dir helfen...

MfG
T-Master
 

blackmaster

BeitragDi, Dez 26, 2006 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Cool, danke dir Very Happy
Es funktioniert sehr gut, du hast mir echt weitergeholfen, vielen dank.

Edit: Sry nochmal, aber ist es möglich irgendwie eine bestimmte Zeile auszulesen?

Gruss Markus
 

timmeTheOnly

BeitragDo, Dez 28, 2006 14:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke mal:

Code: [AUSKLAPPEN]

...

while not eof(file)

    z.zeile = new zeile
    z\inhalt = readline$(file)

wend

seekfile(file,0)

for i = 0 to gesuchteZeile - 1
    readline$(file)
next

gesucht$ = readline$(file)

...


Habs nicht getestet, aber es müsste gehen...

MfG
T-Master

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group