Page 1 sur 1

Problème dans le For avec Step

Publié : lun. 11/juil./2011 12:00
par GallyHC
Bonjour,

J'ai PB 4.60 Béta 3 et il y a une chose que je ne m'explique pas quand je fait :

Code : Tout sélectionner

EnableExplicit

UseJPEGImageDecoder()
LoadImage(0, "Effet.jpg")

Define ImageX.l = ImageWidth(0)
Define ImageY.l = ImageHeight(0)
Define block.l
Define event.l
Define x.l
Define y.l
Define Couleur.l

If OpenWindow(0, 0, 0, ImageX, ImageY,"Pixellisation", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  StartDrawing(WindowOutput(0))
    DrawImage(ImageID(0), 0, 0)
    Repeat
      Event = WaitWindowEvent()
      
      If Event = #WM_LBUTTONDOWN
        
        block + 1
        For x = 0 To ImageX-block Step block
          For y = 0 To ImageY-block Step block
              Couleur = Point(x, y)
              Box(x, y, block, block, Couleur)
          Next y
        Next x
        
      EndIf
    Until Event = #WM_CLOSE
  StopDrawing()
EndIf
Pb me dit "[COMPILER] Ligne 23 : Une contante numerique est attendu apres 'step'", mais la constante est declare et ne pose pas de probleme pour "To ImageX-block " du meme FOR.

Si je retire la contante "block" la plus de problème exemple :

Code : Tout sélectionner

EnableExplicit

UseJPEGImageDecoder()
LoadImage(0, "Effet.jpg")

Define ImageX.l = ImageWidth(0)
Define ImageY.l = ImageHeight(0)
;Define block.l
Define event.l
Define x.l
Define y.l
Define Couleur.l

If OpenWindow(0, 0, 0, ImageX, ImageY,"Pixellisation", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  StartDrawing(WindowOutput(0))
    DrawImage(ImageID(0), 0, 0)
    Repeat
      Event = WaitWindowEvent()
      
      If Event = #WM_LBUTTONDOWN
        
        ;block + 1
        For x = 0 To ImageX-4 Step 4
          For y = 0 To ImageY-4 Step 4
              Couleur = Point(x, y)
              Box(x, y, 4, 4, Couleur)
          Next y
        Next x
        
      EndIf
    Until Event = #WM_CLOSE
  StopDrawing()
EndIf
Alors la j'avous que je ne comprend pas?

Merci d'avance,
GallyHC

Re: Problème dans le For avec Step

Publié : lun. 11/juil./2011 12:03
par gnozal
Dans ton code

Code : Tout sélectionner

Define block.l
block n'est pas une constante mais une variable !

Exemple de définition de constante :

Code : Tout sélectionner

#block = 4

Re: Problème dans le For avec Step

Publié : lun. 11/juil./2011 12:04
par GallyHC
OK desole pour l'erreur, mais je ne peu pas mettre de variable numerique pour step?

Re: Problème dans le For avec Step

Publié : lun. 11/juil./2011 12:05
par gnozal
GallyHC a écrit :OK desole pour l'erreur, mais je ne peu pas mettre de variable numerique pour step?
non

Mais on peut utiliser While / Wend

Re: Problème dans le For avec Step

Publié : lun. 11/juil./2011 12:07
par GallyHC
alors la meme VB c'est le faire et si dans le code on ne connais pas a l'avance de saut avec step (pour x raison possible) on fait comment ? une boucle repeat ect... La je trouve cela vraiment dommage.

Re: Problème dans le For avec Step

Publié : lun. 11/juil./2011 12:10
par gnozal
Par exemple :

Code : Tout sélectionner

Debug "For / Next"
For x = 0 To 6 Step 2
  Debug x
Next
Debug "While / Wend"
x = 0
While x < 7
  Debug x
  x + 2
Wend

Re: Problème dans le For avec Step

Publié : lun. 11/juil./2011 13:49
par falsam
Tu peux simuler ton pas (Step) par une autre boucle for .... next.

Code : Tout sélectionner

Block.i=2

For i=1 To 10
  For j=1 To (Block-1)
    i+1
  Next
  Debug i
Next

Re: Problème dans le For avec Step

Publié : lun. 11/juil./2011 13:59
par Backup
.................

Re: Problème dans le For avec Step

Publié : lun. 11/juil./2011 14:23
par GallyHC
merci a tous pour c'est precision. Je me demande juste a quoi sert STEP si on peu lui mettre une variable en valeur? Si on fait comme tu dit dobro STEP ne sert plus a rien mais cela peu etre une solution que je note bien.

Cordialement,
GallyHC

Re: Problème dans le For avec Step

Publié : lun. 11/juil./2011 18:25
par Anonyme2
Step doit faire partie des commandes du Basic selon la norme xxxxx.
C'est plus propre avec un step bien que la propreté en codage ... :mrgreen: