Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Utilisation des Listes

Compatible Director. Cliquer pour en savoir plus sur les compatibilités.Par Drakini, le 13 octobre 2005

Les listes linéaires

C'est la forme la plus simple de liste que l'on puisse trouver sur Director. Par contre, dès que l'on a besoin d'une solution plus souple, l'on utilisera plus facilement les listes de propriétés, mais pour des développements simples, elles suffisent amplement.

Les listes vous permettent de stocker un nombre important de donnés. En effet, elles permettent de promener des infos en grandes quantitées et de types de données différentes bien plus simplement qu'un grand nombre de variables.

Tout va se faire dans la fenêtre message. Vous rédigez votre ligne de code (la fenêtre message est limitée à une seule ligne), et vous appuyez sur Entrer pour l'exécuter. Le résultat s'affichera automatiquement.

Bon, commençons par déclarer notre liste; dans votre code, la liste linéaire se déclarera comme variable globale.

Fenêtre message :

gListe = []
 
put gListe
 
-- []

Normal, il n'y a rien dedans ;-) Bon, mettons des informations :

gListe : [1,"Drakini","Bourges"]
-- Je peux la structurer directement...
put gListe

Bon, manipulons un peu cette liste linéaire très simple… Je vais passer rapidement sur chacune des fonctions de contrôle des listes linéaires; c'est un cours théorique, à vous de toutes les essayer pour bien en comprendre le fonctionnement. Chaque fonction aurait pu être déclarée de deux façons :

add gListe 17
-- ou
gListe.add(17)

Personnellement, je préfere utiliser la syntaxe à point… Moins verbiale mais plus proche des autres langages… C'est un choix perso, mais je ne donne pas ici systématiquement les deux syntaxes…

gListe.add(17)
-- Insère 17 en dernière position de votre liste
put gListe
 
gListe.addat(2,"Salut")
-- Insère la chaîne "Salut" en deuxième position de la liste
put gListe

Si vous donnez une position supérieur au nombre total de donnée, il incrémentera la liste jusqu'à sa position avec des 0.

gListe.addat(20,20)
put gListe
 
gListe.setat(2,60)
-- Modifie le deuxième élément et le remplace par 60
put gListe
 
gListe.setat(22,50)
-- Pareil que addat, si la position n'existe pas, 
-- il ne modifie rien, mais la cree avec la valeur définit en incrémentant la position de 0.
put gListe
 
gListe.deletat(2)
-- Elimine le deuxième élément de la liste.
put gListe
 
gListe.deletone(0)
-- Elimine la valeur définie de la liste, si elle existe... 
-- Dans le cas particulier où la donnée se répete plusieurs fois dans la liste, cette fonction ne supprime 
-- que la première donnée qu'elle rencontre.
put gListe

Récupérer des informations de/sur la liste

put getat(gListe,2)
-- Récupère la valeur de la position 2.
put gListe
 
put getone(gListe,"Bourges")
-- Nous donne la position d'un élément.
put gListe
 
put gListe.max()
-- Nous donne l'élément le plus haut de la liste. Valable uniquement avec des liste composées de données numérique.
put gListe
 
put gListe.min()
-- L'élément le plus petit.
put gListe
 
put gListe.count()
-- Voici la fonction la plus utile. Elle nous donne le nombre d'éléments de la liste.
put gListe

Nous verrons dans l'application finale, qui clôturera ce tutorial, à quoi sert de récupérer le nombre d'éléments.

Les listes de propriété

Bon, continuons dans notre fenêtre message… On redéclare une nouvelle liste :

Pliste = [:]
put Pliste
-- [:]

Bon, la spécificité d'une liste de propriété, c'est qu'elle permet d'associer une propriété à la valeur contenue dans la liste. Intégrons lui des données :

Pliste.addprop (#nom, "Drakini")
put Pliste
-- [#nom: "Drakini"]

On modifie la valeur de la propriété #nom :

Pliste.setProp (#nom, "Nouvo nom")
put Pliste
-- [#nom: "Nouvo nom"]

Par contre, si cette valeur n'existe pas, cela va produire une erreur. Pour qu'une proporiété soit créée au cas ou elle n'existe pas, il faut alors utiliser setaProp :

Pliste.setaProp (#prenom, "Benjamin")
put Pliste
-- [#nom: "Nouvo nom", #prenom: "Benjamin"]

Récupérer des informations de/sur la liste

Une fois notre liste bien structurée, elle peut représenter une mini base de données temporaire… L'on extrait alors les informations en fonction des choix ( par exemple sur une navigation dynamique) de l'utilisateur.

put Pliste.prenom
-- "Benjamin"

Nous pouvons également utiliser la fonction getProp. Par contre, avec getProp et dans l'exemple ci-dessus d'ailleur, si la propriété n'existe pas, vous allez recevoir une alerte… Il faudra alors utiliser getaProp pour vérifier que la propriété existe avant de lui demander de l'extraire…

put getaprop(Pliste, #mail)
-- <Void>

Bon, vous pouvez aussi utiliser la fonction getPropAt qui permet de récupérer la propriété par rapport à la position de sa valeur.. En fait, ça a peu d'intérêt…

put getpropat (Pliste, 2)
-- #prenom

Supression d'une propriété et de sa valeur :

Pliste.deleteprop(#prenom)
put Pliste
-- [#nom: "Nouvo nom"]

Bon, que dire de plus…. On va encore voir la duplication de liste, et le tri..

Manipuler ses informations

Bon, il est fortement conseillé de dupliquer sa liste lors d'un gros travail ou de grosses manipulations de données… On se garde une sorte de modèle de liste..

Exemple :

Poriginal = [#nom:"Drakini"]
put Poriginal
-- [#nom: "Drakini"]
 
Pcontact = duplicate(Poriginal)
put Pcontact
-- [#nom: "Drakini"]
 
Pcontact.addprop(#prenom, "Benjamin")
put Pcontact
-- [#nom: "Drakini", #prenom: "Benjamin"]
 
put Poriginal
-- [#nom: "Drakini"]

Cela vous evitera de devenir chèvre :-) Et il nous reste à voir le tri de cette liste : Voici pour le tri de simple donnée numérique. J'utilise là une liste linéaire…

Nliste = [1,2,5,6,9,3,4]
put Nliste
-- [1, 2, 5, 6, 9, 3, 4]
 
Nliste.sort()
put Nliste
-- [1, 2, 3, 4, 5, 6, 9]

Et voici pour une liste de proriété contenant des valeurs de types string :

Pcontact.addprop(#mail, "drakini@wanadoo.fr")
put Pcontact
-- [#nom: "Drakini", #prenom: "Benjamin", #mail: "drakini@wanadoo.fr"]
 
Pcontact.sort()
put Pcontact
-- [#mail: "drakini@wanadoo.fr", #nom: "Drakini", #prenom: "Benjamin"]