PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Erreur extraction tableau
Erreur extraction tableau
Iniciado por Quentin Lec., 16,dic. 2019 12:38 - 9 respuestas
Miembro registrado
18 mensajes
Publicado el 16,diciembre 2019 - 12:38
Bonjour,

Voici mon code :





J'essaye de recopier les données d'un tableau (1 dimensions) dans un fichier, et ce à l'aide d'une boucle, hors ce problème survient :









Je comprends ce qu'il se passe mais je n'ai pas de solution pour y remédier.
Peut être un moyen de terminer la boucle lorsque la valeur est faussée?

Merci d'avance.

Quentin
Miembro registrado
2.682 mensajes
Publicado el 16,diciembre 2019 - 12:46
Bonjour,

oui logique que ça plante, tu tentes d'accéder à la valeur d'un élément qui n'existe pas.

Il faut d'ailleurs, à moins d'y être vraiment obligé, proscrire les boucles infinies qui entraînent le type d'erreur que tu as.

Pour t'en sortir, tu as TableauOccurrence(), TableauVersChaine(),...

--
Cordialement,

Philippe SAINT-BERTIN
Miembro registrado
1.002 mensajes
Publicado el 16,diciembre 2019 - 13:29
Bonjour,

Au lieu de faire des boucle
Pour i=1 _A_ tableautraité..occurrence
FIN


Jordan
Miembro registrado
352 mensajes
Publicado el 16,diciembre 2019 - 14:14
L'erreur est effectivement logique, à aucun moment donnée, on teste l'existence d'un nouvel élément du tableau à chaque fois qu'on change de ligne.
La solution de Jordan est une possibilité (c'est aussi celle que j'utilise tout le temps), mais d'autres syntaxes restent possibles, l'une d'elles consistent à remplacer la dernière boucle par celle ci :
POUR TOUT ValeurTableauTraite de TableauTraite
SAI_ContenuFichier+=[RC] + ValeurTableauTraite
FIN
Miembro registrado
18 mensajes
Publicado el 16,diciembre 2019 - 14:59
Merci de vos réponses,

Je ne suis pas sur de bien comprendre le code donnée par Jordan, sert-il à compter le nombre d'élément dans le tableau?
Miembro registrado
491 mensajes
Publicado el 16,diciembre 2019 - 15:51
Bonjour

tableautraité..occurence => retourne le nombre d’occurrence dans le tableau
exemple : un tableau avec ces valeurs :[100,200,300,400,500]
ici tableautraité..occurence sera égale à 5

Pour i = 1 _A_ tableautraité..occurence
trace(tableautraité[i])
FIN

ce qui ce passe dans le code ci dessus :

i = 1
la trace affichera au premier tour de boucle la valeur 100
i = 2
la trace affichera au second tour de boucle la valeur 200
i = 3
la trace affichera au troisième tour de boucle la valeur 300
i = 4
la trace affichera au quatrième tour de boucle la valeur 400
i = 5
la trace affichera au cinquième tour de boucle la valeur 500



NB : pas besoin d'incrémenter 'i' cela se fait de façon automatique

cordialement

DG
Miembro registrado
2.682 mensajes
Publicado el 16,diciembre 2019 - 16:21
Attention tout de même avec la propriété ..Occurrence. Dans le cas d'un tableau multidimension, ..Occurrence renvoie le nombre totale de valeur du tableau, c'est-à-dire NbLigne x NbColonne.

--
Cordialement,

Philippe SAINT-BERTIN
Miembro registrado
352 mensajes
Publicado el 16,diciembre 2019 - 16:27
Philippe SB a écrit :
> Attention tout de même avec la propriété ..Occurrence. Dans le cas d'un tableau multidimension, ..Occurrence renvoie le nombre totale de valeur du tableau, c'est-à-dire NbLigne x NbColonne.

Ici, le tableau est à 1 dimension donc pas de soucis avec la propriété ..Occurrence
Miembro registrado
491 mensajes
Publicado el 16,diciembre 2019 - 16:39
juste une dernière info rien à voir avec votre problème lors d'une incrémentation vous écrivez : x =x + 1

vous pouvez l'écrire aussi de cette façon : x++

https://doc.pcsoft.fr/fr-FR/?1512008

Équivalence

j ++ est équivalent à j = j + 1
j -- est équivalent à j = j - 1
j += 3 est équivalent à j = j + 3
j -= 3 est équivalent à j = j - 3
Il est conseillé d'utiliser les syntaxes : "j ++", "j --", "j +=" et "j -=", plus rapides que les syntaxes habituelles.

Cordialement

DG
Miembro registrado
23 mensajes
Publicado el 16,diciembre 2019 - 16:49
Bonjour,

pour éviter les boucles, ne serait-il pas plus simple d'utiliser la fonction : TableauVersChaine ?

https://doc.pcsoft.fr/fr-FR/?1000017007

Pas de boucle, on peut personnaliser le séparateur.
Une seule ligne de code.

sExtractionTable = TableauVersChaine(TableauTraité)