Seite 1 von 1
if FileSize immer #true ?
Verfasst: 18.09.2012 18:01
von Sebastian
Ich habe mir angewöhnt alle Fehler mit if-Abfragen abzufangen (man will ja sauber programmieren). Nun macht mir FileSize() Probleme. Die einfache if-Abfrage wird immer ausgeführt, auch wenn FileSize -1 ergibt. Ist das ein Bug oder bin ich einfach gerade blind?
IF FileSize("bla.db") > 0 funktioniert übrigens... hmm.
Code: Alles auswählen
IF FileSize("bla.db")
debug FileSize("bla.db")
debug "Dieser Code wird ausgeführt, aber es gibt die Datei bla gar nicht..."
ELSE
debug "Datei existiert nicht"
ENDIF
Re: if FileSize immer #true ?
Verfasst: 18.09.2012 18:11
von c4s
IF überprüft nicht, ob ein Wert größer Null, sondern ungleich Null ist. Wie du dir selbst denken kannst, trifft dies bei -1 zu.
Re: if FileSize immer #true ?
Verfasst: 18.09.2012 18:12
von STARGÅTE
Wenn du "sauber" programmieren willst, solltest du auch "saubere" logische Aussagen vergleichen.
ist gleichbedeutend mit
somit arbeitet der Code richtig, denn auch -1 (oder -2) ist <> 0, und ergibt somit Wahr.
Nur weil du IF benutzt, heißt das nicht, dass du "fragst" ob die Funktion Erfolg hatte.
Andere Funktionen können auch 0 zurückgeben wenn sie erfolgreich waren.
ist also die richtige Wahl, wenn du prüfen willst, ob die Datei existiert.
Re: if FileSize immer #true ?
Verfasst: 18.09.2012 18:27
von ts-soft
STARGÅTE hat geschrieben:
ist also die richtige Wahl, wenn du prüfen willst, ob die Datei existiert.
So, und jetzt der Korintenkac..., auch eine Datei mit der Größe 0 ist existent!
Re: if FileSize immer #true ?
Verfasst: 18.09.2012 18:28
von Kevin
STARGÅTE hat geschrieben:Wenn du "sauber" programmieren willst, solltest du auch "saubere" logische Aussagen vergleichen.
ist gleichbedeutend mit
somit arbeitet der Code richtig, denn auch -1 (oder -2) ist <> 0, und ergibt somit Wahr.
Nur weil du IF benutzt, heißt das nicht, dass du "fragst" ob die Funktion Erfolg hatte.
Andere Funktionen können auch 0 zurückgeben wenn sie erfolgreich waren.
ist also die richtige Wahl, wenn du prüfen willst, ob die Datei existiert.
ganz richtig wäre
da die Datei auch leer sein könnte
mfg kevin
[EDIT] 22 Sekunden zu langsam
Re: if FileSize immer #true ?
Verfasst: 18.09.2012 18:52
von STARGÅTE
Ja klar, danke für die Richtigstellung
Re: if FileSize immer #true ?
Verfasst: 19.09.2012 17:32
von Sebastian
Okay. Danke. Ich dachte immer, dass #false <= 0 bedeutet. Nun ist mir alles klar. Vielen Dank für den Hinweis!
Re: if FileSize immer #true ?
Verfasst: 19.09.2012 17:34
von NicTheQuick
#False ist nur eine Konstante, die in dem Fall 0 ist. Wenn du also schreibst "If Funktion() = #False", dann wird einfach nur geprüft, ob der Rückgabewert der Funktion 0 war, weil zur Kompilierungszeit #False durch eine 0 ersetzt wird.