PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → [WD17] Paramètre optionnel de type tableau associatif
[WD17] Paramètre optionnel de type tableau associatif
Débuté par GD, 25 mar. 2013 19:10 - 4 réponses
Membre enregistré
3 messages
Posté le 25 mars 2013 - 19:10
Bonjour,

Je souhaiterais savoir s'il est possible de déclarer une procédure avec un paramètre optionnel de type tableau associatif.
Je sais qu'on peut :
- avoir des paramètres optionnel en donnant une valeur par défaut
- avoir des paramètres de type tableau associatif
Mais je ne trouve pas la syntaxe pour un paramètre de type tableau associatif optionnel.
Dois-je passer par une fonction à nombre de paramètres variable?

Voici ce que j'ai déjà essayé et qui ne fonctionnent pas :
PROCEDURE MaProcedure(sTexte est une chaîne,
taTableau est un tableau associatif de Variants = Null)
PROCEDURE MaProcedure(sTexte est une chaîne,
taTableau est un tableau associatif de Variants = [[]])
PROCEDURE MaProcedure(sTexte est une chaîne,
taTableau est un tableau associatif de Variants = [ [ ] ])
PROCEDURE MaProcedure(sTexte est une chaîne,
taTableau est un tableau associatif de Variants = [ ["test", "tata"] ])
PROCEDURE MaProcedure(sTexte est une chaîne,
taTableau est un tableau associatif de Variants = [ ["test", "tata"], ["test2", "toto"] ])


Merci d'avance pour votre aide!
Posté le 25 mars 2013 - 19:15
Bonsoir,

essayer un petit truc du genre :

Procedure TestParamTblAssoc(*)

SI MesParamètres..Occurrence>0 ALORS
SI TypeVar(MesParamètres[1])=wlTableauAssociatif ALORS
POUR TOUT _my_elem,_key de MesParamètres[1]
Info(_key)
FIN
FIN
FIN

bon dèv
Membre enregistré
3 messages
Posté le 25 mars 2013 - 19:24
Allez, juste pour le fun, un message très encourageant suite à cette syntaxe :
J'utilise une fonction renvoyant ce que je veux...
PROCEDURE Init_TA_Vide()
taVide est un tableau associatif de Variants
RENVOYER taVide

PROCEDURE MaProcedure(sTexte est une chaîne,
taTableau est un tableau associatif de Variants = Init_TA_Vide())

Le message est...
Un élément de type 'tableau associatif' ne peut pas être converti vers le type 'tableau associatif'.
Membre enregistré
256 messages
Popularité : +29 (29 votes)
Posté le 25 mars 2013 - 21:51
Bonsoir,

Passez en paramètre une structure contenant le tableau associatif.
Ca oblige à déclarer une variable du type de la structure à chaque appel mais la structure peut également contenir tous les paramètres de la procédure (quand il y a beaucoup de paramètres, ça peut aussi simplifier la lecture du prototype).


Structure :
STParamMaProc est une une structure
Param1 est un entier
Param2 est une chaîne
ParamTA est un tableau associatif de chaînes
FIN



Procédure :
Procedure MaProc(Param est un STParamMaProc)
...



Appel :
Param est STParamMaProc
Param.Param1 = ...
Param.Param2 = ...
Param.ParamTA["Clé1"] = "Val1"
Param.ParamTA["Clé2"] = "Val2"
MaProc(Param)


Si le tableau associatif existe déjà, utilisez la syntaxe
Param.ParamTA <- MonTAExistant


Bons développements
Posté le 12 juillet 2018 - 17:12
Bonjour,
J'ai ete confronté au problème ce jour.
Il faut utiliser : montableau est un tableau associatif de chaîne = [["",""]]
Cordialement