Nach meinem Verständnis ist Null FALSE und alles andere ist TRUE.
Das erscheint mir schon deshalb logisch weil es in PB keine bool'schen Variablen gibt.
Wozu auch ?
Mein PC arbeitet intern sowieso mit 32 Bit.
Speicher zu sparen indem man bool'sche Variablen in Bits speichert wäre unsinnig, da die interne Umsetzung sehr langsam wäre.
Selbst in den Sprachen in denen es bool'sche Variablen gibt werden die kaum genutzt und statt dessen andere mit ungleich Null abgefragt.
Und, da wo sie genutzt werden sehe ich keinen Vorteil darin.
Aber das Thema lautet ja auch nicht "Sollte es in PB bool'schen Variablen geben ?".
Daß es in PB keine bool'schen Variablen gibt ist eine Tatsache (und kein Fehler).
Mit anderen Worten : Es gibt in PB keinen Variablentyp der nur 2 verschiedene Werte annehmen kann.
Also kann man auch nicht blind darauf vertrauen, daß eine Variable nur einen von zwei möglichen Werten enthält.
Wenn 0 FALSE und nur -1 TRUE sein soll - was ist dann 42 ?
Code: Alles auswählen
Debug #True
Der Wert der Konstante muß nach meinem Verstandnis aber nicht -1 sein. Jeder Wert ungleich Null ist korrekt.
Das hat nichts mit PB zu tun.
In anderen Sprachen gibt es z.B. auch Funktionen die einen ErrorCode zurück liefern.
Bei Null (Error=FALSE) ging alles glatt. Bei ungleich Null (Error=TRUE)ist ein Fehler aufgetreten. Dabei kann der ErrorCode dann auch verschiedene Werte ungleich Null annehmen.
Es ist sogar weit verbreitet einen nicht-bool'schen Wert als solchen zu gebrauchen.
Anders als in einigen anderen Sprachen ist diese "trickreiche Vermischung" von arithmetischen und Bool'schen Werten in PB aber NICHT überall sinnvoll.
Mit
Code: Alles auswählen
If Len(String$)
Wenn FileSize() tatsächlich immer nur die Dateigröße liefern würde könnte man auch da mit
Code: Alles auswählen
If FileSize(DateiName$)
Natürlich kann man mit OpenFile() feststellen ob sich eine Datei öffnen lässt.
In PB kann man aber vorher mit FileSize() schon feststellen ob es sie schon gibt (-1: Datei wurde nicht gefunden. -2: Datei ist ein Verzeichnis.).
Diesen Vorteil erkauft man sich durch einen kleinen Nachteil :
Die "trickreiche Vermischung" von arithmetischen und Bool'schen Werten klappt hier nicht, da z.B. -1 (ungleich Null) TRUE ergibt.
Man muß also um festzustellen ob eine Datei bereits einen Inhalt hat
Code: Alles auswählen
If FileSize(DateiName$) > 0
Code: Alles auswählen
If FileSize(DateiName$)
Mit anderen Worten : It's not a bug, it's a feature!