grand_dragon_rouge54
Messages postés23Date d'inscriptiondimanche 30 avril 2006StatutMembreDernière intervention14 octobre 2006
-
19 mai 2006 à 18:47
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 2014
-
19 mai 2006 à 22:01
Je comprends pas.
J'ai écris le code suivant.
j = 0
While (Label(t).Caption <> 0) Or (j = 5)
t = TireChiffre()
j = j + 1
Wend
En fait, il s'agit de données mises aléatoirement dans 11 labels sous VB6.
> La fonction TireChiffre tire un chiffre compris entre 1 et 11 et le renvoie. Ce chiffre permet de définir quel label va recevoir la donnée.
> Tous les labels font partis d'un group nommé label. J'ai donc 11 labels nommés Label(1), Label(2), ... Label(10) et Label(11).
> Plus haut dans le programme, tous les labels sont initialisés avec un affichage de 0.
> Je veux que si le sort tombe sur un label dont l'affichage est occupé par autre chose qu'un zéro, il tire un autre numéro de label.
==>Néanmoins, afin de ne pas chercher indéfiniment un numéro de case si le sort ne tombe jaùais sur une place libre, je défini que le système n'aura que 5 tirages pour trouver une place libre. Après je définirais une place libre d'une autre manière.
Le problème c'est que ma boucle n'a pas l'air de fonctionner. En effet, elle dépasse le nombre 5 pour arriver en OVERFLOW à 32767.
Quelqu'un aurait une idée ?
D'après moi ma boucle telle quelle signifie :
TANT QUE l'affichage du label en cour n'est pas égal à 0 OU que le compteur j n'est pas égal à 5
ALORS on tire un nouveau numéro avec la fonction TireChiffre
on incrémente le compteur j pour montrer que l'on vient de faire un essai de nouveau
tirage
Arrivé en fin de boucle on test l'affichage du nouveau label ou si le compteur est arrivé à 5
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 19 mai 2006 à 22:01
Ok, j'avais pas réfléchi suffisament.
Tu as fait une condition OU, c'est à dire que tant que l'une des 2 conditions est remplie, tu exécute la boucle, quelque soit la valeur de la seconde condition. Donc tant que Label<>0 tu boucle quelque soit la valeur de j
Ta condition doit etre Tant que label<>0 ET j<5 tu boucle, donc essaye avec ça
WHILE (Label(t).Caption <> "0") AND (j<5)