Ich habe ein ähnliches Phänomen mit Or Not():
Code: Alles auswählen
img.s
iid.l
If img <> ""
iid = LoadImage(#PB_Any, img)
EndIf
If img = "" Or iid = 0 Or Not(IsImage(iid))
iid = CreateImage(#PB_Any, xs, ys)
Else
ResizeImage(iid, xs, ys)
EndIf
Da meckert der Assembler:
Code: Alles auswählen
PureBasic.asm[49967]:
MP50
PureBasic.asm[2414]MP50[117]:
AND 0,0
error: invalid operand.
Aus der Fehlermeldung muss man erstmal schlau werden...
Ich habe verschiedene Varianten probiert:
Code: Alles auswählen
If img = "" Or iid = 0 Or Not(IsImage(iid)) ; => failed
If img = "" Or (iid = 0) Or Not(IsImage(iid)) ; => ok
If (img = "") Or iid = 0 Or Not(IsImage(iid)) ; => failed
If img = "" Or iid = 0 Or (Not(IsImage(iid))) ; => ok
If iid = 0 Or Not(IsImage(iid)) ; => ok
If img = "" Or iid = 0 Or IsImage(iid) = 0 ; => ok
Sicher ist es mit den Klammern besser, aber eigentlich sollte die erste Schreibweise gehen, da "=" Vorrang vor "Or" hat, oder? Ich werd's mal in den "Bug report" im englischen Forum stellen...
Sven