Problème dans le For avec Step

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Problème dans le For avec Step

Message 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
Dernière modification par GallyHC le lun. 11/juil./2011 12:03, modifié 1 fois.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Re: Problème dans le For avec Step

Message 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
Dernière modification par gnozal le lun. 11/juil./2011 12:05, modifié 1 fois.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Problème dans le For avec Step

Message par GallyHC »

OK desole pour l'erreur, mais je ne peu pas mettre de variable numerique pour step?
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Re: Problème dans le For avec Step

Message 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
Dernière modification par gnozal le lun. 11/juil./2011 12:07, modifié 1 fois.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Problème dans le For avec Step

Message 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.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Re: Problème dans le For avec Step

Message 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
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Problème dans le For avec Step

Message 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
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Problème dans le For avec Step

Message par Backup »

.................
Dernière modification par Backup le sam. 01/oct./2011 9:31, modifié 1 fois.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Problème dans le For avec Step

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Problème dans le For avec Step

Message 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:
Répondre