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

beckerich 308 Messages postés jeudi 29 septembre 2005Date d'inscription 17 septembre 2013 Dernière intervention - 21 oct. 2009 à 22:34 - Dernière réponse : Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention
- 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
Guillemouze 1015 Messages postés samedi 25 octobre 2003Date d'inscription 29 août 2013 Dernière intervention - 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é 94 internautes ce mois-ci

Commenter la réponse de Guillemouze
Meilleure réponse
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 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é 94 internautes ce mois-ci

Commenter la réponse de Cirec
beckerich 308 Messages postés jeudi 29 septembre 2005Date d'inscription 17 septembre 2013 Dernière intervention - 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.