Ich hoffe das macht ein Board Admin Sticky!
Mehrere Zeilen Kommentieren
Wer sich schon einmal darüber geärgert hat, das man in PB nicht mehrere Zeilen Kommentieren kann.
Hier ist eine einfache sehr Lösung ohne vor jede Zeile Semikolons zu setzen.
Mit CompilerIf 1=2 (ergibt False) werden die nachfolgendenZeilen nicht ausgeführt bis CompilerEndIf auftaucht.
Wenn man die Zeilen wieder braucht ändert man die Zeile in CompilerIf 1=1 (ergibt True)
Code: Alles auswählen
CompilerIf 1=2
; Code wird nicht ausgeführt und nicht kompiliert
; Code wird nicht ausgeführt und nicht kompiliert
; Code wird nicht ausgeführt und nicht kompiliert
; Code wird nicht ausgeführt und nicht kompiliert
CompilerEndIf
Code: Alles auswählen
CompilerIf 1=1
; Code wird ausgeführt und kompiliert
; Code wird ausgeführt und kompiliert
; Code wird ausgeführt und kompiliert
; Code wird ausgeführt und kompiliert
CompilerEndIf
IF NOT
PureBasic hat ja nun mal keinen NOT Operator bei IF abfragen.
Da in PureBasic auch negative Werte True sind, und nur die 0 als False gewertet wird (Das sollte mal in die PB Hilfe geschrieben werden!!), kann man bei Rückgabewerten aus Funktionen Testen ob die Funktion 0 zurückgibt.
Beispiel:
Code: Alles auswählen
If OpenWindow(2, 100, 100, 200, 100, #PB_Window_SystemMenu, "Window") = 0
MessageRequester("Fehler", "Fenster konnte nicht geöffnet werden!", #MB_OK|#MB_ICONERROR)
End ; oder ErrorHandler()
EndIf
Man kann sich auch sein eigenes NOT basteln:
Code: Alles auswählen
Procedure Not(expression)
if expression ; ACHTUNG auch negative Werte sind TRUE!!!!!
ProcedureReturn 0
else
ProcedureReturn 1 ; Nur True wenn expression = 0
endif
EndProcedure
;
a.l = 0
If Not(a.l)
PrintN("false")
Endif
EndIf
Die oberen Beispiele Funktionieren aber nicht, wenn man mehrere abfragen mir AND oder OR verknüpft.
Da hilft es dann nur noch den ELSE Zweig zu missbrauchen.
Das Funktioniert immer mit jeder IF variante
Code: Alles auswählen
If a=10 And b>=10 And c=20
Else
MessageRequester("NOT !","Es ist NICHT a=10 And b>=10 And c=20")
EndIf
test = 0
If test
Else
MessageRequester("If test","test ist NOT TRUE")
EndIf
-------------------------------------------------------
Debuging
Da PureBasic Variablen nicht Automatisch umwandelt (Casted), muss man beim Debuggen immer Zahlen in Strings wandeln,( mit STR(), STRF() usw….).Wen das ein bisschen nervt der kann das in zwei Zeilen Schreiben:
Code: Alles auswählen
; Schreibweise in einer Zeile
test = 5
Debug "Der Wert von test ist = " + Str(test)
;Schreibweise in 2 Zeilen
test = 7
Debug "Wert von test:"
Debug test
Wenn ihr auch noch Tips habt dann schreibt sie hier. Wir sammel Sie