WD9 - Boucle FOR avec pas négatif - Erreur de synatxe ou Bug !!!
Le
Vincent

Bonjour,
j'ai le code suivant :
Trace("Debut")
POUR indLigne=vNbLigne A 1 PAS -1
Trace("indligne=" + NumériqueVersChaîne(indLigne))
SI COL2=0 ALORS
TableSupprime(Table,indLigne)
FIN
FIN
Trace("Fin")
Résultat du trace :
Debut
indligne=3
indligne=3
Plantage !!!!
la valeur du pas n'est pas répercuté => indligne n'est pas décrémenté et
pointe sur une ligne qui n'existe plus.
Je peux remplacer ma boucle POUR par TANTQUE mais j'aimerais savoir si
c'est un pb de syntaxe de ma part ou un bug de windev
Version interne : 01-90034J
Extrait de l'aide :
=
POUR Indice = 10 A 1 PAS -1
Tableau [ Indice ] = MaVariable + 10
FIN
j'ai le code suivant :
Trace("Debut")
POUR indLigne=vNbLigne A 1 PAS -1
Trace("indligne=" + NumériqueVersChaîne(indLigne))
SI COL2=0 ALORS
TableSupprime(Table,indLigne)
FIN
FIN
Trace("Fin")
Résultat du trace :
Debut
indligne=3
indligne=3
Plantage !!!!
la valeur du pas n'est pas répercuté => indligne n'est pas décrémenté et
pointe sur une ligne qui n'existe plus.
Je peux remplacer ma boucle POUR par TANTQUE mais j'aimerais savoir si
c'est un pb de syntaxe de ma part ou un bug de windev
Version interne : 01-90034J
Extrait de l'aide :
=
POUR Indice = 10 A 1 PAS -1
Tableau [ Indice ] = MaVariable + 10
FIN
La syntaxe me paraît correcte. Par contre vnbligne est-il le nombre
de lignes dans la table (tableoccurence?). si oui, est-il recalculé
dans la boucle quand vous faites le tablesupprime?
J'avais oublié :
Avant la boucle, j'ai le code suivant, justement pour éviter le recalcul
part tableoccurrence
vNBligne est un entier = Tableoccurence(matable)
...
boucle POUR
...
Oui, mais si tu supprimes une ligne dans la boucle, il y a un risque
que cela mette la panique...
C'est une table mémoire ou fichier ?
--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Je viens de trouver l'erreur :
Indligne etait déclaré par erreur en Numerique et non en Entier.
indligne est un numerique
vNBligne est un entier = Tableoccurence(table)
POUR indLigne=vNbLigne A 1 PAS -1
SI COL2=0 ALORS
TableSupprime(Table,indLigne)
FIN
FIN
visiblement, une boucle pour ne supporte pas le type numerique. Par
contre ça ne gêne absolument pas le "compilateur"
d'où l'intéret de bien donnet TOUT le code qui plante. Dans ton cas,
personne d'autre que toi pouvrait trouver la solution :)
--
Jacques Trepp
Albygest - 81160 - St Juery
jacques-pas de
(enlever '-pas de spam' pour me joindre)
http://www.albygest.com