PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV (earlier versions) → Passage de Tableau dans une procedure
Passage de Tableau dans une procedure
Started by yannNou98800, Jan., 19 2024 1:33 AM - 4 replies
Registered member
2 messages
Posted on January, 19 2024 - 1:33 AM
Bonjour,

J'ai ce code (sachant que chaque cahine du tableau a bien une valeur):
TableauDonnees est un tableau de chaines = [xlsDonnee(IdFichierXLS,i,2),xlsDonnee(IdFichierXLS,i,3), xlsDonnee(IdFichierXLS,i,4) , xlsDonnee(IdFichierXLS,i,5)]

envoieElements(sMesValeurs

-------------

Ma procédure est déclarée ainsi :
procedure interne envoieElements (pTableauDonnees)

-------------

J'ai cette erreur:
Le paramètre n°1 n'a pas de valeur par défaut et n'a pas reçu de valeur.

Avez-vous une idée?

Merci d'avance.
Posted on January, 19 2024 - 10:02 AM
Bonjour,

vous chargez une variable Tableaudonnees et vous passez en paramètre la variable sMesValeurs à votre procédure, est ce voulu ?
Registered member
3,891 messages
Popularité : +227 (347 votes)
Posted on January, 20 2024 - 10:35 PM
Bonjour,
Dans l'appel de EnvoieElément, tu passes une chaine (sMesValeurs), hors EnvoieElement attend un tableau.

--
Il y a peut être plus simple, mais, ça tourne
Registered member
2 messages
Posted on January, 22 2024 - 12:25 AM
Pardon, j'ai fait un mauvais copier-coller:
TableauDonnees est un tableau de chaines = [xlsDonnee(IdFichierXLS,i,2),xlsDonnee(IdFichierXLS,i,3), xlsDonnee(IdFichierXLS,i,4) , xlsDonnee(IdFichierXLS,i,5)]
envoieElements(TableauDonnees)

-------------

Ma procédure est déclarée ainsi :
procedure interne envoieElements (pTableauDonnees)
Registered member
3,891 messages
Popularité : +227 (347 votes)
Posted on January, 23 2024 - 12:01 PM
Qu'en est-il lorsque tu types ton paramètre dans la déclaration ?
Par ailleurs, tu utilises une procédure interne, les variable déclarées dans la procédures "mère" sont considérées comme globales. Donc TableauDonnées peut être utilisé directement dans EnvoieEnément sans être passé en paramètre.
Ton code est équivalent à
TableauDonnees est un tableau de chaînes = [xlsDonnée(IdFichierXLS,i,2),xlsDonnée(IdFichierXLS,i,3), xlsDonnée(IdFichierXLS,i,4) , xlsDonnée(IdFichierXLS,i,5)]
envoieElements()

PROCEDURE INTERNE EnvoieElément()
Trace(TableauDonnées[1]
FIN

Toutefois, le problème est ailleurs. Tu utilises une variable "i". Cette variable n'est jamais initialisée donc elle vaut 0 (zéro)
TableauDonnees est un tableau de chaînes = [xlsDonnée(IdFichierXLS,i,2),xlsDonnée(IdFichierXLS,i,3), xlsDonnée(IdFichierXLS,i,4) , xlsDonnée(IdFichierXLS,i,5)]

est donc équivalent à
TableauDonnees est un tableau de chaînes = [xlsDonnée(IdFichierXLS,0,2),xlsDonnée(IdFichierXLS,0,3), xlsDonnée(IdFichierXLS,0,4) , xlsDonnée(IdFichierXLS,0,5)]


--
Il y a peut être plus simple, mais, ça tourne
Message modified, January, 23 2024 - 12:04 PM