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.
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

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

Re: Step dans une procedure
Publié : sam. 07/sept./2019 20:40
par venom
C'est bien dommage que ça ne soit pas possible.

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

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

Merci de vos réponses fortes utiles.
@++
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

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
Merci de vos contributions.
@++