Seite 1 von 1

"Eof(0)" gibt 0 aus und das schon am anfang einer

Verfasst: 02.04.2006 15:39
von Tsuki-Namida
Hallo,
ich lade mir eine *.php datei aus dem Internet herunter, diese wird im HTML Quellentext in einer *.txt Gespeichert.
Anschließend öffne ich diese *.txt Datei und möchte sie auslesen bis Eof (Ende Der Datei).
Die Procedure ist ja eigentlich kein Probelm. Nur PB sagt befor er die erste Zeile ausliest das er schon am ende ist :? ....

Hier mal der Quellentext:

Code: Alles auswählen

URLDownloadToFile_(0, "http://www.komoro.de/radio/php1/playing.php", "C:\Text.txt", 0, 0)
Delay(100)
If ReadFile(0, "C:\Text.txt")
  Debug "Datei geöffnet"
  Debug Eof(0)
  While Eof(0) <> 0
    Debug ReadString()
  Wend
  CloseFile(0)
Else
  MessageRequester("Information","Konnte Datei nicht öffnen!")
EndIf
Ich verstehe das nicht warum der Debug mir zwar anzeigt das die Datei geöffnet werden konnte aber im anschlus bei "Debug Eof(0)" eine 0 anzeigt anstat ungleich 0....

[Edit]
Wenn ich aber stat "While Eof(0) <> 0" "While Eof(0) <> 1" mache liest er aus nur dann über das Ende hinaus bzw. ich komme dann nicht mahr aus der Schleife raus (logisch)... also die *.txt Datei ist in ordnung....
[/Edit]

Verfasst: 02.04.2006 15:47
von Deeem2031
Wie jetzt :?:
Eof(0) gibt nur 1 zurück wenn er am Ende der Datei is, nich wenn er nich am Ende ist. Is doch auch logisch: "If Eof(0)" -> Wenn Ende der Datei 0 und nich andersrum.

Verfasst: 02.04.2006 15:54
von Tsuki-Namida
@Deeem2031
ja das ist ja das....

in der hilfe steht :

Code: Alles auswählen

 Eof()
Syntax

Ergebnis = Eof(#Datei)
Beschreibung

EOF steht für 'End Of File' (Ende der Datei). Die Funktion gibt einen Wert ungleich 0 zurück, wenn das Ende der angegebenen '#Datei' erreicht wurde, andernfalls wird 0 zurückgegeben. 

Für ein Beispiel sehen Sie zum ReadFile() Befehl. 
aber an einer anderen Stelle steht (siehe beispiel Quellentext):

Code: Alles auswählen

  ReadFile()
Syntax

Ergebnis = ReadFile(#Datei, DateiName$)
Beschreibung

Öffnet eine existierende Datei 'DateiName$' ausschließlich für Lese-Operationen. 

Wenn #PB_Any als '#Datei' Parameter verwendet wird, dann wird der Identifier der neuen Datei als 'Ergebnis' zurückgegeben. 

Ist 'Ergebnis' ungleich 0, wurde die Datei erfolgreich geöffnet, andernfalls konnte die Datei nicht geöffnet werden. Dies muss immer getestet werden, da das Ausführen von Operationen auf nicht erstellte Dateien zu schlimmen Abstürzen führt. 

Wenn die '#Datei' bereits benutzt wurde, wird die vorherige Datei automatisch geschlossen. 

  If ReadFile(0,"Text.txt")   ; wenn die Datei geöffnet werden konnte, setzen wir fort...
    While Eof(0) <> 0         ; sich wiederholende Schleife bis das Ende der Datei ("end of file") erreicht ist
      Debug ReadString()      ; Zeile für Zeile im Debugger-Fenster anzeigen
    Wend
    CloseFile(0)              ; schließen der zuvor geöffneten Datei
  Else
    MessageRequester("Information","Konnte Datei nicht öffnen!")
  EndIf

Verfasst: 02.04.2006 15:59
von Green Snake
das beispiel ist falsch. wurde schon öfters hier durchgekaut.
es muss

While EOF(#Datei) = 0

Wend

sein :wink:

Verfasst: 02.04.2006 16:01
von ts-soft
Wenn Du alles glaubst, was Du liest ....

Einfach logisch überlegen, dann klappt es, bzw. dieser Fehler ist in der
aktuellen Hilfe zu PB4 nicht mehr enthalten :wink:

Verfasst: 02.04.2006 16:04
von Tsuki-Namida
ahhhh super :) Danke....