Page 1 sur 2

Step

Publié : mer. 04/mai/2016 11:37
par pat
Bonjour,

Faites ceci dans PB 5.42 :

For f.a=10 to 1 Step-1
Debug f
Next f

Vous aurez 10, 8, 6, 4, 2 et non 10 à 1.

C'est comme si ce n'était pas Step-1 mais Step-2

Maintenant à la place f.a faites f tout court. Cela marche parfaitement bien.
Et si maintenant vous faites Define f.a et dans la boucle For f, cela ne fonctionne pas non plus.

Je pense que c'est un bug PureBasic.
Si vous êtes d'accord avec ça, vous pouvez renseigner le site anglais (je suis particulièrement nul en Anglais pour faire ça moi-même).

Re: Step

Publié : mer. 04/mai/2016 11:45
par GallyHC
Bonjour,

Je vais déjà renseigner ici en disant que j'ai fait le test sur PB 5.42 LTS (x32 et x64) avec ce code :

Code : Tout sélectionner

For f.a = 10 To 1 Step -1
  Debug f
Next f
Et j'obtient bien :

Code : Tout sélectionner

10
9
8
7
6
5
4
3
2
1
Cordialement,
GallyHC

Re: Step

Publié : mer. 04/mai/2016 11:48
par falsam
Idem pour moi. Pas de souci avec ce code. PB 5.42 (x86)

Re: Step

Publié : mer. 04/mai/2016 11:50
par pat
Affaire résolu.
Je vais quand même chercher à voir pour quoi chez moi cela ne fonctionne pas.

Re: Step

Publié : mer. 04/mai/2016 12:13
par microdevweb
Idem que Gally

#PB 5.42 64

Re: Step

Publié : mer. 04/mai/2016 12:24
par Ar-S
+1 tout est ok

Re: Step

Publié : mer. 04/mai/2016 13:03
par Shadow
Désolé mais moi j'ai un résultat différent...
C'est curieux que ça fasse le résultat de Pat quand même.

Donc mon résultat est bien différent..... de Pat.
En gros tous ça pour dire -> Rien à signalé !

Re: Step

Publié : mer. 04/mai/2016 17:35
par Micoute
Quel plaisantin tu fais, Shadow !

Re: Step

Publié : ven. 06/mai/2016 13:18
par pat
Bonjour,

Ce n'est pas une plaisanterie.
En fait, faites ceci :

For f.a=10 To 1 Step-1
a=a+1
Next f
Debug a

Vous trouverez 5.
Même si vous faites : Define f.a et mettez For f=10 To Step-1 cela ne fonctionnera pas.
Retirer le .a et tout est correct.

Maintenant faites ceci : le même que ci-dessus mais avec For f=10 To 1 Step-1.
Debug a
Vous trouverez 10.

Donc il y a bien un bug.

Et ceci pour les versions de PB 5.31, 5.40 et 5.42.

A vous de vérifier !!!

Re: Step

Publié : ven. 06/mai/2016 13:41
par GallyHC
Bonjour,

Donc avec ce code :

Code : Tout sélectionner

For i.a = 10 To 1 Step -1
  a + 1
Next i

Debug a
J'ai bien "5", donc il y a bien un problème. Par contre j'ai par acquis de conscience, j'ai fait :

Code : Tout sélectionner

For i.a = 10 To 1 Step -1
  a + 1
  Debug i
Next i

Debug a
et la j'ai bien :
10
9
8
7
6
5
4
3
2
1
10
Donc en gros ce problème survient si "aucun" retour dans le "For", comme un debug.

Cordialement,
GallyHC

Re: Step

Publié : ven. 06/mai/2016 14:07
par pat
Mais cela revient à la normale si on met f à la place de f.a

Re: Step

Publié : ven. 06/mai/2016 14:17
par cage
Bonjour,

Depuis le premier message et en essayant tous les exemples, j'ai toujours obtenu le bon résultat.

Impossible de reproduire le phénomène. Windows 10 / 64-bit + PB 5.42 LTS

Re: Step

Publié : ven. 06/mai/2016 14:21
par pat
Je suis sous Vista 32 bits.
Donc cela semblerait fonctionner pour les 64 bits.
A faire le test pour ceux qui sont "encore" en 32 bits.

Re: Step

Publié : ven. 06/mai/2016 14:36
par falsam
Je ne comprends pas l’intérêt de faire une boucle for avec une variable incrémentale de de type ASCII

Code : Tout sélectionner

For i.a = 10 To 1 Step -1
Etre sur 1 byte au lieu de 4 bytes avec un type integer ? Est ce que ça a vraiment un sens ?
pat a écrit :Mais cela revient à la normale si on met f à la place de f.a
Retour à la normal effectivement mais là aussi, aucun sens. La boucle for ne sachant pas traiter un step de type float, autant utiliser un type integer.

En tenant compte de ce que je viens de dire ton code est fonctionnel avec un type integer

Code : Tout sélectionner

For i = 10 To 1 Step -1
  a + 1
Next
Debug a
Au fait, on peut simplifier ce code :wink:

Code : Tout sélectionner

For i = 1 To 10
  a + 1
Next
Debug a
Un Step en moins ^^

Re: Step

Publié : sam. 07/mai/2016 10:34
par pat
A falsam,

Autant que je sache, le float c'est .f et non pas .a (ascii).
De plus, il est vrai qu'on peut faire soi-même sa boucle sans passer par un For/Next/Step mais c'est quand même pratique. Et si je choisis d'aller en régressant, c'est que dans mes codes j'ai besoin que cela se fasse ainsi.
Il n'est pas anormale de faire une boucle avec un .a mais si tu veux dire qu'il n'y a pas de bug, ceci n'engage que toi.