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

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

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

Beitrag 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]
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag 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.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag 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
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag von Green Snake »

das beispiel ist falsch. wurde schon öfters hier durchgekaut.
es muss

While EOF(#Datei) = 0

Wend

sein :wink:
-.-"
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

ahhhh super :) Danke....
Antworten