Seite 1 von 1

Gefährlich: PB4 + "...AND NOT..."

Verfasst: 12.03.2006 18:33
von Hyper
Hallo Gefährten,

wie ihr unten seht, ist bei "...AND NOT..." äußerste Vorsicht geboten, der Compiler meckert nicht, die Algebra wird einfach falsch angewendet. Meiner Meinung nach ein Bug.

Code: Alles auswählen

    If 0 And Not 0
      Debug "Fälschlicherweise wird dieser Text ausgegeben"
    EndIf
    
    If 0 And (Not 0)
      Debug "Richtigerweise wird dieser Text nicht ausgegeben"
    EndIf

Verfasst: 12.03.2006 18:46
von Andre
Habe es mal an Fred gemeldet.

Verfasst: 13.03.2006 12:55
von Sven
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