Objet mapping équivalent à un QMap Qt [Résolu]

Messages postés
308
Date d'inscription
jeudi 29 septembre 2005
Dernière intervention
17 septembre 2013
- 21 oct. 2009 à 22:34 - Dernière réponse :
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
- 22 oct. 2009 à 14:46
Bonjour,

je recherche une équivalence dans la vcl ou autre pascal à un objet QMap de Qt.
Cet objet permet le stockage la liste d'une valeur clé et d'une valeur texte par exemple ([1;'un'], [2;"deux"], ...)
et on peut retrouver une valeur par sa clé, parcourir la liste, ...
Je sais que l'on peut gérer cela avec une liste chaînée, mais existe-t-il un objet tout fait dans la libairie de Delphi ?
Merci.
Luc.
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
- 22 oct. 2009 à 14:01
3
Merci
alors plusieurs possibilités:
Pour une association ayant une chaine pour clé, tu peux utiliser un descendant de TStrings (TStringList):
SL.AddObject('LaCle', MonObjetAssocié);
MonObjetAssocié := SL.Objects[SL.IndexOf('LaCle')];

ou un TBucketList (ou TObjectBucketList) pour une clé entiere, objet, ... :
BL.Add(Pointer(1), Pointer('Valeur'));
MaValeur := BL.Data[Pointer(1)];


Par contre, si tes valeurs sont des chaines, je ne sais pas comment delphi gere la liberation dans le cas ou elle sont stockées dans un pointer, à verifier.

Merci Guillemouze 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de Guillemouze
Meilleure réponse
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
- 22 oct. 2009 à 14:46
3
Merci
Salut,

TStrings permet bien plus de choses et plus simplement encore.

En fait TStringList peut fonctionner comme un fichier ini:

[hr][b]var

 /bSL: TStrings;
[b]begin
  /bSL :=  TStringList.Create;
  [b]try
    /bSL.Values['Nom'] := 'Toto';
    Label1.Caption := SL.Values['nom'];
  [b]finally
    /bSL.Free;
   end ;
end;
[hr]la ligne SL.Values['Nom'] : = 'Toto'; ajoute une entrée sous la forme "Name=Value Nom=Toto" si 'Name' existe déjà seule Value sera remplacée.
regarde aussi du coté des propriétés :
Names et IndexOfName


[hr]@+Cirec
[hr]

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de Cirec
Messages postés
308
Date d'inscription
jeudi 29 septembre 2005
Dernière intervention
17 septembre 2013
- 22 oct. 2009 à 14:35
0
Merci
Merci Guillemouze,

je savais qu'on pouvait associer, et je l'utilise dans mes programmes, un objet à un élément d'un TStringList. Je ne retrouve néanmoins pas la simplicité d'utilisation d'un QMap. Il faut faire un transtypage pour écrire ou lire une donnée, que ce soit un objet ou un type standard.
Luc.
Commenter la réponse de beckerich

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.