[VB] : For ... Next et fouttage de gueule

: For ... Next et fouttage de gueule [VB] - Programmation

Marsh Posté le 22-05-2001 à 10:15:51    

p****n je comprenais pas l'erreur dans mon algo et elle vient de la maniere tordue dont fonctionne le for ... next :

Code :
  1. Dim i As Double
  2. For i = 0 To 5 Step 1
  3.     MsgBox("Test1" )
  4. Next i
  5. For i = 0 To 0.5 Step 0.1
  6.     MsgBox("Test2" )
  7. Next i


 
il est écrit dans l'aide :
"condition d'éxecution de la boucle : si le pas est positif, counter <= end"
ici counter c'est i et end c'est soit 5 soit 0.5
 
et ... Test1 s'affiche 6 fois : normal
mais Test2 s'affiche 5 fois : pourquoi ?  :gun:  :fou:  :fou:  :pt1cable:


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 22-05-2001 à 10:15:51   

Reply

Marsh Posté le 22-05-2001 à 11:05:14    

t'es sur que ca marche les boucles For avec des nombres qui ne sont pas des entiers???
 
personnellement j'ai jamais vu ca...

Reply

Marsh Posté le 22-05-2001 à 11:13:46    

fin  meme si ca marche...
 
qd tu utilises de nombres réels faut tjs avoir à l'esprit que ce ne sont pas des nombres "ronds"
autrement dit tu as un step de 0.1  mais en réalité tu as un step de 0.10000001   'fin un truc du genre... et c'est de la que pourrait provenir ton erreur

Reply

Marsh Posté le 22-05-2001 à 11:15:30    

Oui, sans doute que:
0.1 + 0.1 + 0.1 + 0.1 + 0.1 > 0.5
Remplace le 0.5 par 0.51.

Reply

Marsh Posté le 22-05-2001 à 11:59:47    

Tu dois pas être avec le dernier service pack
car j'ai essayé et j'ai bien 2 fois 6 messages
Je suis en SP4

Reply

Marsh Posté le 22-05-2001 à 12:02:34    

:cry:
le probleme c'est que ce source proviens d'un test que j'ai réalisé.
dans mon code c'est pas 0.5 que j'ai, mais une variable ...
je suis dans la m***e alors ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 22-05-2001 à 12:03:15    

j'ai VB5 ... sans SP ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 22-05-2001 à 12:11:19    

Tu fais :
 
For i = 0 To MAX+PAS/2 Step PAS
    MsgBox("Test2" )  
Next i  
 
et ça devrait marcher !!!

Reply

Marsh Posté le 22-05-2001 à 12:28:21    

hehe ... j'ai justement une variable PAS ;)
en fait j'ai une bidouille de ce genre, liée à MAX que je bidouille plus haut ...
je voulais surtout savoir pkoi VB il peut pas ...
merci bien les gars


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 22-05-2001 à 12:34:21    

Pour la clarté de ton code, il est bon d'avoir une règle de nommage pour les variables. C'est plus long à écrire mais plus facile à lire. Moi j'utilise une adaptation perso de la notation hongroise qui donne qq chose du genre :
IntVar pour un entier court
LongVar pour un entier long
StrVar pour une chaine de caractères
RealVar pour un réel
etc etc, à adapter à chaque logiciel de développement.
 
C'était juste pour répondre au fait que tu avais une variable nommée Pas !!!

Reply

Marsh Posté le 22-05-2001 à 12:34:21   

Reply

Marsh Posté le 22-05-2001 à 14:18:47    

Et bien pour moi ca marche...
6 fois pour Test1 et 6 fois pour test2
 
Donc bizarre... peut etre un bug corrigé sur ma version VB6 SP5

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed