Custom_array[custom_index] := custom_value possible ??????

damanix Messages postés 20 Date d'inscription samedi 7 septembre 2002 Statut Membre Dernière intervention 2 novembre 2002 - 7 sept. 2002 à 21:09
damanix Messages postés 20 Date d'inscription samedi 7 septembre 2002 Statut Membre Dernière intervention 2 novembre 2002 - 8 sept. 2002 à 16:23
Je voudrais savoir si c possible en delphi comme dans a peu pret tous les langages, mais la ça fait 3 heures que je me perd dans les arrays properties et j'y arrive poa :( ...

Bien sur custom_array est un array, pas juste une propriété, autrement dit je veux pouvoir faire :

custom_array['tamere'] := 2344;
custom_array['tonpere'] := 2345;
custom_array['tasoeur'] := 2346;

et recupérer une val :

score := custom_array['tonpere']; // ici 2345...

Si qq'un voulait bien me dire comment on fait, je lui serait ETERNELLEMENT reconnaissant.

Merci
Dx.

4 réponses

cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
7 sept. 2002 à 22:24
On peut presque tout faire avec un tableau sauf une chose : utiliser une chaine comme index. Par contre il est possible d'utiliser un type énuméré pour servir d'index.

Dons ton cas tu peux définir le type suivant :
Type MaFamille = (MonPere,Mamere,MaSoeur,EtMoi);
Ensuite créer un tableau :
Var MesScores : Array[MaFamille]Of Integer;

Après tu peux l'utiliser comme suit :
MesScores[MonPere]:=1;
MesScores[MaMere]:=2;
MonScore:=MesScores[EtMoi];

Tu peux aussi faire des boucle :
Var Index,LeMeilleur:MaFamille;
...
LeMeilleur:=MonPere;
For Index:= Low(MaFamille) To High(MaFamille) Do
If MesScores[Index]>MesScores[LeMeilleur]
Then LeMeilleur:=Index

--- :sleepy) Nono du Moulin :sleepy) ---
0
damanix Messages postés 20 Date d'inscription samedi 7 septembre 2002 Statut Membre Dernière intervention 2 novembre 2002
8 sept. 2002 à 02:52
Merci, c'est déjà un grand pas :)
Mais ce n'est malheureusement pas exactement ce que je voulais ( ou alors c que j'ai pas tout compris ...):

Ce que je voudrais c la possibilité d'ajouter ou supprimer a n'importe quel moment un index... le probleme avec ta solution c que les types sont fixes nan ?

Si je reprend ton exemple il faudrait qu'à n'importe quel moment je puisse rajouter à MaFamille une valeur MaCousine qui me serve ensuite d'index dans le tableau MesScores[MaCousine]...

Et enfin 2e précision, pkoi on peut pas se servir d'une chaine comme index ???????
Est ce qu'il y a un moyen d'outrepasser cette restriction ???

Encore Merci pour la réponse rapide :)
Dx.
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
8 sept. 2002 à 14:55
Delphi ne propose pas de tableaux associatifs d'origine.
Il n'est donc pas question d'utriliser la construction que tu demandes.
En revanche, regardes la technique pour réaliser une Hash table. C'est comme ça que fonctionnent les autres langages.

En résumé : tu mets tes valeurs dans une TStringList.
Pour ajouter une valeur, tu utilises la méthode Add,
pour supprimer, tu utilises la méthode IndexOf.
Pour associer n'importe quoi à une chaîne de la liste, utilises la méthode AddObjects.

Pour finir, l'utilisation des composants TList et ses dérivées offre de nombreux avantages sur les tableaux : allocation dynamique, recherche rapide, suppression d'éléments, possibilité d'associer n'importe quelle valeur, structure ou objet à une chaine.

Que demander de mieux ?

May Delphi be with you.
Delphi advanced
0
damanix Messages postés 20 Date d'inscription samedi 7 septembre 2002 Statut Membre Dernière intervention 2 novembre 2002
8 sept. 2002 à 16:23
Rien, c'est exactement ce qu'il me fallait...
Merci beaucoup à tous :)
Dx.
0
Rejoignez-nous