Page 1 sur 2

Step dans une procedure

Publié : sam. 07/sept./2019 20:09
par venom
Bonjour a tous,

Voilà j'ai déjà étais face a ce problème, mais je n'ai jamais chercher a le résoudre vraiment. :oops:
Je cherche le moyen de renvoyer une valeur a step dans une boucle For Next. Comme je ne sais pas trop comment expliqué l'erreur, voici un exemple simple :

Code : Tout sélectionner

Procedure TestStep(Min, Max, ValeurPas)
For a = Min To Max Step ValeurPas
 Debug a 
Next
EndProcedure

TestStep(0, 100, 2)
Voila. Je ne sais pas pourquoi PureBasic me renvoie une telle erreur 8O Le retour d'information (ValeurPas) est pourtant bon ?? :?
Il y a t'il une alternative ? Merci






@++

Re: Step dans une procedure

Publié : sam. 07/sept./2019 20:13
par SPH
un Step x n'est pas possible; meme hors procedure. Va falloir que tu fasse par exemple un while wend :P

Re: Step dans une procedure

Publié : sam. 07/sept./2019 20:40
par venom
C'est bien dommage que ça ne soit pas possible. :x Ta réponse ne m'arrange pas.






@++

Re: Step dans une procedure

Publié : sam. 07/sept./2019 21:38
par Naheulf
On peut utiliser Step dans une boucle For (y compris dans une procédure) mais la valeur après Step doit impérativement être une constante (voir la doc)
Exemple de code valide :

Code : Tout sélectionner

Procedure TestStep(Min, Max)
	For a = Min To Max Step 2
		Debug a
	Next
EndProcedure

TestStep(0, 100)

Re: Step dans une procedure

Publié : sam. 07/sept./2019 22:01
par venom
Oui, dommage que ça doit être une constante. Je vais réfléchir autrement pour pallier au problème.






@++

Re: Step dans une procedure

Publié : sam. 07/sept./2019 22:29
par SPH

Code : Tout sélectionner

Procedure TestStep(Min, Max, ValeurPas)
; For a = Min To Max Step ValeurPas
; Debug a
; Next

a=Min
While Min<=Max
  Debug a
  a+ValeurPas
  Min+ValeurPas
Wend
EndProcedure

TestStep(0, 100, 2)

Ou plus simplement :

Code : Tout sélectionner

Procedure TestStep(Min, Max, ValeurPas)
; For a = Min To Max Step ValeurPas
; Debug a
; Next

While Min<=Max
  Debug Min
  Min+ValeurPas
Wend
EndProcedure

TestStep(0, 100, 2)


Re: Step dans une procedure

Publié : dim. 08/sept./2019 5:22
par Naheulf
SPH, Je ne comprends pas ton premier exemple car tu utilise "a" comme itérateur mais tu Continue à utiliser "Min" pour la condition de fin de boucle...
À mon avis, on peut se contenter d'un simple :

Code : Tout sélectionner

Procedure TestStep(Min, Max, ValeurPas)
	a = Min           ; For a = Min
	While a <= Max    ; To Max
		Debug a        ;     Contenu de la boucle "For"
		a + ValeurPas  ; Step ValeurPas
	Wend              ; Next
EndProcedure

TestStep(0, 100, 2)
pour avoir un code qui ressemble plus au comportement de la boucle for.

Re: Step dans une procedure

Publié : dim. 08/sept./2019 5:33
par SPH
Naheulf a écrit :SPH, Je ne comprends pas ton premier exemple car tu utilise "a" comme itérateur mais tu Continue à utiliser "Min" pour la condition de fin de boucle...
À mon avis, on peut se contenter d'un simple :

Code : Tout sélectionner

Procedure TestStep(Min, Max, ValeurPas)
	a = Min           ; For a = Min
	While a <= Max    ; To Max
		Debug a        ;     Contenu de la boucle "For"
		a + ValeurPas  ; Step ValeurPas
	Wend              ; Next
EndProcedure

TestStep(0, 100, 2)
pour avoir un code qui ressemble plus au comportement de la boucle for.
Oui, aussi :wink:

Re: Step dans une procedure

Publié : dim. 08/sept./2019 7:22
par Christophe
Encore plus simple...
Fonctionne aussi avec une boucle For Next

Code : Tout sélectionner

Procedure TestStep(Min, Max, ValeurPas)
For a = Min To Max Step 0
  Debug a
  a+ValeurPas
Next
EndProcedure

TestStep(0, 100, 2)

Re: Step dans une procedure

Publié : dim. 08/sept./2019 8:02
par venom
8) Merci de vos réponses fortes utiles. :wink:




@++

Re: Step dans une procedure

Publié : dim. 08/sept./2019 9:48
par Zorro
Christophe a écrit : For a = Min To Max Step 0
For a = Min To Max ̷S̷t̷e̷p̷ ̷0̷

Re: Step dans une procedure

Publié : dim. 08/sept./2019 10:29
par SPH
C'est moche 8O

Re: Step dans une procedure

Publié : dim. 08/sept./2019 12:53
par microdevweb

Code : Tout sélectionner

Procedure TestStep(Min, Max, ValeurPas)
  Protected a = Min
  While a < Max
    Debug a
    a + ValeurPas
  Wend
EndProcedure

TestStep(0, 100, 2)

Re: Step dans une procedure

Publié : dim. 08/sept./2019 14:20
par MLD
avec un peu de retard ma petite solution

Code : Tout sélectionner

Procedure TestStep(Min, Max,ValeurPas)
  For a = Min To Max 
  Debug a
  a =  (a + ValeurPas) -1
Next
EndProcedure

TestStep(0, 100,2)

Re: Step dans une procedure

Publié : dim. 08/sept./2019 14:27
par venom
Comme a son habitude, PureBasic offre une multitude de solutions :lol:
Merci de vos contributions.






@++