[Résolu] Comment envoyer une liste en paramètre
[Résolu] Comment envoyer une liste en paramètre
Bonjour à tous,
pour un programme et pour éviter de toujours retaper les mêmes paramètres pour toutes mes listes, j'ai besoin d'envoyer le nom de la liste à une procédure.
Je pense que j'ai sûrement fait ce genre de chose, mais là je cale lamentablement et je ne retrouve pas de programme pour m'inspirer, alors je viens vers vous pour solliciter votre aide bienveillante et je vous en remercie par anticipation.
pour un programme et pour éviter de toujours retaper les mêmes paramètres pour toutes mes listes, j'ai besoin d'envoyer le nom de la liste à une procédure.
Je pense que j'ai sûrement fait ce genre de chose, mais là je cale lamentablement et je ne retrouve pas de programme pour m'inspirer, alors je viens vers vous pour solliciter votre aide bienveillante et je vous en remercie par anticipation.
Dernière modification par Micoute le lun. 24/juin/2019 14:25, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
-
- Messages : 43
- Inscription : lun. 22/oct./2018 19:34
- Localisation : Haisnes (62)
Re: Comment envoyer une liste en paramètre
Bonjour Micoute,
je ne sais pas si c'est ce que tu veux...
je ne sais pas si c'est ce que tu veux...
Code : Tout sélectionner
Global NewList Liste()
Procedure Affiche(List Nom())
ForEach Nom()
Debug Nom()
Next
EndProcedure
For x = 0 To 100
AddElement(liste())
liste() = x
Next
Affiche(Liste())
Re: Comment envoyer une liste en paramètre
Merci beaucoup Christophe, mais ma procédure étant plus élaborée, j'ai droit au message "La liste ne correspond pas au paramètre de la procédure", pourtant je pense ne rien avoir oublié.
Code : Tout sélectionner
Declare Mettre_a_jour_Liste(List Nom(), Id)
Procedure Alimentaire()
Cacher_Liste()
HideGadget(#Lst_Alimentaire, #False)
ForEach Lst_Produits()
If Lst_Produits()\Magasin = "Alimentaire"
Mettre_a_jour_Liste(Lst_Alimentaire(), #Lst_Alimentaire)
EndIf
Next
ComboBoxGadget(#Cmb_Ali, 135, 340, 405, 20, #PB_ComboBox_Editable)
AddGadgetItem(#Cmb_Ali, 0, "Basique")
AddGadgetItem(#Cmb_Ali, 1, "Boissons")
AddGadgetItem(#Cmb_Ali, 2, "Charcuterie")
AddGadgetItem(#Cmb_Ali, 3, "Condiments")
AddGadgetItem(#Cmb_Ali, 4, "Conserves")
AddGadgetItem(#Cmb_Ali, 5, "Cuisine")
AddGadgetItem(#Cmb_Ali, 6, "Desserts")
AddGadgetItem(#Cmb_Ali, 7, "Fromages")
AddGadgetItem(#Cmb_Ali, 8, "Fruits et légumes")
AddGadgetItem(#Cmb_Ali, 9, "Grignotage")
AddGadgetItem(#Cmb_Ali, 10, "Petit déjeuner")
AddGadgetItem(#Cmb_Ali, 11, "Poissons")
AddGadgetItem(#Cmb_Ali, 12, "(Surgelés) Glaces et desserts")
AddGadgetItem(#Cmb_Ali, 13, "(Surgelés) Légumes et plats cuisinés")
AddGadgetItem(#Cmb_Ali, 14, "(Surgelés) Poissons et viandes")
AddGadgetItem(#Cmb_Ali, 15, "Traiteur")
AddGadgetItem(#Cmb_Ali, 16, "Viandes")
AddGadgetItem(#Cmb_Ali, 17, "Volailles")
SetGadgetState(#Cmb_Ali, 0)
EndProcedure
;Ajuster la liste affichée selon le magasin choisi
Procedure Mettre_a_jour_Liste(List Nom(), Id)
AddElement(Nom())
With Nom()
\Magasin = Lst_Produits()\Magasin
\Rayon = Lst_Produits()\Rayon
\Produit = Lst_Produits()\Produit
AddGadgetItem(Id, -1, \Magasin + #LF$ + \Rayon + #LF$ + \Produit)
SetGadgetItemData(Id, CountGadgetItems(Id)-1, ListIndex(Nom()))
EndWith
EndProcedure
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Comment envoyer une liste en paramètre
Code : Tout sélectionner
Procedure AfficheListe(List param.s())
ForEach param()
Debug param()
Next
EndProcedure
NewList test.s()
AddElement(test()) : test() = "foo"
AfficheListe(test())
Structure MaStructure
nom.s
EndStructure
NewList test2.MaStructure()
AddElement(test2()) : test2()\nom = "foo"
AfficheListe(test())
Procedure AfficheListeStructure(List param.MaStructure())
ForEach param()
Debug param()\nom
Next
EndProcedure
-
- Messages : 43
- Inscription : lun. 22/oct./2018 19:34
- Localisation : Haisnes (62)
Re: Comment envoyer une liste en paramètre
Re Micoute
Remplace :Declare Mettre_a_jour_Liste(List Nom(), Id) par Declare Mettre_a_jour_Liste(List Nom.NomDeTaStructure(), Id)
Mettre_a_jour_Liste(Lst_Alimentaire(), #Lst_Alimentaire) par Mettre_a_jour_Liste(Lst_Alimentaire.NomDeTaStructure(), #Lst_Alimentaire)
Procedure Mettre_a_jour_Liste(List Nom(), Id) par Procedure Mettre_a_jour_Liste(List Nom.NomDeTaStructure(), Id)
Remplace :Declare Mettre_a_jour_Liste(List Nom(), Id) par Declare Mettre_a_jour_Liste(List Nom.NomDeTaStructure(), Id)
Mettre_a_jour_Liste(Lst_Alimentaire(), #Lst_Alimentaire) par Mettre_a_jour_Liste(Lst_Alimentaire.NomDeTaStructure(), #Lst_Alimentaire)
Procedure Mettre_a_jour_Liste(List Nom(), Id) par Procedure Mettre_a_jour_Liste(List Nom.NomDeTaStructure(), Id)
Re: Comment envoyer une liste en paramètre
Merci beaucoup pour cette aide qui m'a libéré d'un gros fardeau.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
- microdevweb
- Messages : 1800
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: [Résolu] Comment envoyer une liste en paramètre
Bonjour Micoute,
Voici également une solution pour les flags (vrai ou faux) avec des masques logiques
Ici un exemple un peux plus difficile , avec une map pouvant contenir 32 chaînes de caractères et pour l’a quel on peux sélectionné les éléments que l'on veux
Voici également une solution pour les flags (vrai ou faux) avec des masques logiques
Code : Tout sélectionner
EnumerationBinary
#P_1
#P_2
#P_3
#P_4
#P_5
; etc ... 32 possibilités au total
EndEnumeration
Procedure test(flags)
If flags & #P_1
Debug "Para 1 "
EndIf
If flags & #P_2
Debug "Para 2 "
EndIf
If flags & #P_3
Debug "Para 3 "
EndIf
If flags & #P_4
Debug "Para 4 "
EndIf
If flags & #P_5
Debug "Para 5 "
EndIf
EndProcedure
test(#P_1|#P_3|#P_5)
Code : Tout sélectionner
; exemple avec un map de maximum 32 éléments
; et des flags de sélection
EnumerationBinary
#P_1
#P_2
#P_3
#P_4
#P_5
; etc ... 32 possibilités au total
EndEnumeration
Global NewMap myFruts.s() ; map de fruits
; j'ajoute quelques fruits pour l'exercice
AddMapElement(myFruts(),Str(#P_1))
myFruts()= "Pomme"
AddMapElement(myFruts(),Str(#P_2))
myFruts()= "Bannane"
AddMapElement(myFruts(),Str(#P_3))
myFruts()= "Orange"
AddMapElement(myFruts(),Str(#P_4))
myFruts()= "Poire"
AddMapElement(myFruts(),Str(#P_5))
myFruts()= "Fraise"
Procedure test(Map mp.s(),flags)
Protected i,mask=%00000000000000000000000000000001
; parcours des 32 possibités
For i = 0 To 31
If flags & mask
If FindMapElement(mp(),Str(mask))
Debug mp()
EndIf
EndIf
mask = mask<<1
Next
EndProcedure
test(myFruts(),#P_1|#P_3|#P_5)
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Work at Centre Spatial de Liège
Re: [Résolu] Comment envoyer une liste en paramètre
Un grand merci microdevweb pour ce partage qui va me servir
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !