|
| Inicio → WINDEV 2025 → Tableau associatif de structure : ne pas avoir à tester l'existence de la clé |
| Tableau associatif de structure : ne pas avoir à tester l'existence de la clé |
| Iniciado por paul.gera, 04,nov. 2018 15:49 - 4 respuestas |
| |
| | | |
|
| |
| Publicado el 04,noviembre 2018 - 15:49 |
Bonjour,
J'utilise un tableau associatif de structure.
Je souhaite savoir s'il existe une solution pour ne pas avoir à tester l'existence de la clé ?
En effet, j'obtiens l'erreur "Elément inexistant dans le tableau associatif" - et pour cause ! - alors que je souhaite récupérer "" ou Null par exemple quand je fais Info(tabAssociatif[12345]).
Est-ce possible svp ? |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 96 mensajes |
|
| Publicado el 05,noviembre 2018 - 09:33 |
| |
| |
| | | |
|
| | |
| |
| Publicado el 05,noviembre 2018 - 10:32 |
Bonjour,
Je suis en v23. Je n'ai pas mis de notion de clé dynamique dans l'init.
Cordialement,
Paul |
| |
| |
| | | |
|
| | |
| |
| Publicado el 05,noviembre 2018 - 17:49 |
J'ai donc mis : tClientsListe est un tableau associatif (*,"",*) de stClient dynamique
Mais quand je fais par exemple Info(tClientsListe[123].sNomClient) pour récupérer le nom du client (pour une clé qui n'existe pas volontairement) j'ai une erreur pour élément inexistant.
Où ai-je faux ? |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 96 mensajes |
|
| Publicado el 05,noviembre 2018 - 20:25 |
Bonsoir,
le problème vient de l'utilisation d'un attribut directement depuis le tableau associatif.
Voici un exemple de code (non testé) pour corriger le problème
tClientsListe est un tableau associatif (*, Null,*) de stClient dynamique
client est un stClient dynamique = tClientsListe[123] SI client <> Null ALORS Info(client.sNomClient) FIN
Ainsi, vous n'aurez plus l'erreur.
Mais pour moi, cela revient à la même chose que d'écrire le code suivant :
tClientsListe est un tableau associatif (*, Null,*) de stClient dynamique
SI tClientsListe[123]..existe ALORS Info(tClientsListe[123].sNomClient) FIN
En effet, vous vérifiez l'existence de la clé.
Une troisième solution serait de passer par une fonction :
tClientsListe est un tableau associatif (*, Null,*) de stClient dynamique
...
client est un stClient dynamique = lire_client_ou_défaut(123) Info(client.sNomClient)
Procedure lire_client_ou_défaut(clé_client est entier) client est un stClient dynamique SI tClientsListe[clé_client]..vide ALORS client = allouer un stClient() SINON client = tClientsListe[clé_client] FIN
RENVOYER client
A vous de voir ce qui vous convient le mieux.
Bonne soirée !
-- Johjo aka Jonathan Laurent
Codez mieux ! Codez plus vite !
Mon blog sur WinDev : http://www.ytreza.org Me contacter sur slack (wx-community) : https://frama.link/BoBD0SY0 Faîtes moi un ping : http://www.ytreza.org/fr/services/ping-sur-forum |
| |
| |
| | | |
|
| | | | |
| | |
|