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
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
olivier
Le #14102321
Vincent wrote:
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



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?
Vincent
Le #14102211
olivier a écrit :
Vincent wrote:

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




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
...
Romain PETIT
Le #14102201
Dans son message précédent, Vincent a écrit :
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é)
Vincent
Le #14102181
Romain PETIT a écrit :
Dans son message précédent, Vincent a écrit :

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 ?




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"
jacques trepp
Le #14102171
Vincent a écrit :
Romain PETIT a écrit :

Dans son message précédent, Vincent a écrit :


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 ?





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
Poster une réponse
Anonyme