WD9 - Boucle FOR avec pas négatif - Erreur de synatxe ou Bug !!!
5 réponses
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
olivier
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 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?
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
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 ...
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
...
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
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 ?
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"
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"
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
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
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 spam.trepp@free.fr
(enlever '-pas de spam' pour me joindre)
http://www.albygest.com
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