Page 1 sur 1
Ajouter élément s'il n'existe pas dans une liste
Publié : sam. 08/août/2020 11:46
par omega
Bonjour à tous
Je voudrais mettre à jour une liste chaînée de la manière suivante:
Si un élément n'existe pas, je le crée
Code : Tout sélectionner
Si codeprod$ n'existe pas dans la liste, je le crée:
AddElement(MargeList())
MargeList()\codeprod=Val(codeprod$)
Merci
Re: Ajouter élément s'il n'existe pas dans une liste
Publié : sam. 08/août/2020 12:58
par Micoute
Je pense que je regarderais dans la liste, à la position où devrait se trouver l'élément, si sa valeur existe.
Code : Tout sélectionner
SelectElement(MaListe()\MonElement, 2)
If MaListe()\MonElement = MaValeurAttendue
Faire_ceci
Else
Faire_Cela
Endif
ou quelque chose comme ça.
Re: Ajouter élément s'il n'existe pas dans une liste
Publié : sam. 08/août/2020 15:06
par Marc56
Il faut parcourir toute la liste pour voir s'il existe et si non, alors on l'ajoute:
Code : Tout sélectionner
ForEach MargeList()
With MargeList()
If \codeprod = Val(codeprod$)
Element_Exist = 1
Break
EndIf
EndWith
Next
If Element_Exist = 0
AddElement(...
EndIf
Note le
break qui permet de sortir tout de suite si l'élément est trouvé sans avoir à continuer la liste.
PS. Si le
codeprod est unique, alors une map pourrait être plus intéressante en utilisant ce code comme clé.
Tu peux ainsi savoir si le code existe sans parcourir tous les éléments.

Re: Ajouter élément s'il n'existe pas dans une liste
Publié : sam. 08/août/2020 15:11
par Shadow
Je déconseille ce genre de chose !
Utilise une Map, c'est ultra rapide !
Re: Ajouter élément s'il n'existe pas dans une liste
Publié : sam. 08/août/2020 23:43
par omega
Merci à tous, je vais essayer une map (pour la 1ère fois)
Re: Ajouter élément s'il n'existe pas dans une liste
Publié : sam. 08/août/2020 23:48
par Shadow
omega a écrit :Merci à tous, je vais essayer une map (pour la 1ère fois)
Il faut une première à toute chose !
Mais ça va drastiquement te simplifier la vie !
Car l'accès est instantané grâce à une clef, vois ça comme une adresse si tu veux en gros !
Re: Ajouter élément s'il n'existe pas dans une liste
Publié : dim. 09/août/2020 15:11
par Micoute
Shadow, tu as bien résumé.
Re: Ajouter élément s'il n'existe pas dans une liste
Publié : dim. 09/août/2020 16:14
par omega
Bonjour à tous
En essayant d'utiliser une Map, je n'arrive pas à faire ce que je veux. J'ai vu l'aide avec un exemple mais sans succès. Regardez ce code et dites moi pourquoi une erreur est signalée. Voici un aperçu sur ce que je veux:
La map doit être structurée de la la façon suivante:
Doc.s
Remise.s
La clé de recherche (unique) est Doc.
Code : Tout sélectionner
Structure BasicStructure
doc.s
remise.s
EndStructure
NewMap TestMap.BasicStructure()
;Quelques datas pour tester (erreur signalée à cet endroit)
TestMap("BR1000")\Doc= 1
TestMap("BR1200")\Doc= 2
TestMap("BR1300")\Doc = 3
TestMap("BR1400")\Doc = 4
;
Debug "Number of elements in the Map: " + MapSize(TestMap())
ForEach TestMap()
Debug TestMap()\Doc
Next
; Accès direct
If FindMapElement(TestMap(), "BR1300")
Debug TestMap()\doc
Else
Debug "BR1300 non trouvé"
EndIf
Merci de votre aide
Re: Ajouter élément s'il n'existe pas dans une liste
Publié : dim. 09/août/2020 16:36
par omega
ça y est, j'ai compris, et ça marche si simple pourtant...
Code : Tout sélectionner
NewMap TestMap.s()
TestMap("BR10") = "25540"
TestMap("BR15") = "32750"
TestMap("BR34") = "4545100"
TestMap("BR55") = "226014"
If FindMapElement(TestMap(), "BR15")
Debug TestMap()
Else
Debug "BR15 non trouvé"
EndIf
Merci à tous