IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[Collection] Retrouver la clé d'un item, est-ce possible ?


Sujet :

VB 6 et antérieur

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Par défaut [Collection] Retrouver la clé d'un item, est-ce possible ?
    Bonjour.

    Désolé, pour le double-post (sujet déjà présent ici), mais entre les différents forums VB(A), je ne sais pas lequel est le plus adapté...

    Comme dit dans le titre, dans le SDK d'un logiciel j'ai une Collection dont je ne saisis pas totalement la "stratégie" d'attribution des clés lors de l'insertion d'un item.
    Et je trouve plus simple de retrouver un item par sa clé que de le débusquer en naviguant dans toute la Collection...

    Une méthode getKey() est évoquée dans un forum, mais ça ne fonctionne ni avec les objets de ma Collection, ni avec la Collection elle-même...
    Bref, est-il possible de (et comment) retrouver les clés des items de ma Collection ?

    Merci.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Par défaut
    Salut

    Comment veux-tu qu'on t'aides alors que tu parles d'une api externe dont nous ne connaissons strictement rien ?

    L'informatique c'est pas généralisable hin ...

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Par défaut
    Citation Envoyé par Vld44
    L'informatique c'est pas généralisable hin ...
    Ben zut, moi qui croyait que les objets servaient justement à factoriser un maximum de chose (comme les méthodes de classe, par exemple)...

    Ma Collection est issue d'un SDK, certe, mais je ne vois pas vraiment où est le problème, ça reste une Collection, non ?
    On va faire comme si c'était la fonction d'un collègue qui retourne une Collection, et je ne sait pas comment il choisit les clés des Items lorsqu'il appelle la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    la_collection.Add un_item, une_cle
    La question était donc : "est-il possible, pour un Item donné d'une Collection, de retrouver a posteriori la clé par laquelle il a été référencé (lors de l'insertion) dans cette Collection ?"

    Autrement dit, est-il possible de retrouver la valeur de une_cle après l'insertion de un_item dans la_collection ?

    (Question recevable mon capitaine ??)

  4. #4
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    A ma connaissanc, ce n'est pas possible. Perso, quand je fais une collection d'objets, je prevois toujours dans ces objets une propriété Key que je renseigne avant mon add. Mais ce n'est pas une obligation.


    Quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MyObjet.Key = LaClé
    MyCollection.Add MyObjet, LaClé
    A défaut, je ne connais aucun moyen de retrouver cette clé

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Par défaut
    Merci pour la réponse.

    Quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MyObjet.Key = LaClé
    MyCollection.Add MyObjet, LaClé
    Mes items ont une propriété "nom", qui dans 90% des cas correspond à la clé qui les référence...il reste malheureusement 10% des cas pour lesquels ça ne marche pas. C'est vraiment...dommage

    D'après mes recherche sur le net, je m'attendais à cette réponse, mais je trouve quand même surprenant que l'implémentation d'une Collection qui propose un référencement par clé ne prévoit pas une propriété ou méthode retournant ces clés...

    Encore merci.

    A+

  6. #6
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Intéresse toi à l'objet Dictionary qui est une collection un peu plus musclée
    notamment grâce à la méthode Keys qui retourne un tableau de toutes les clés.
    Voir également Exists Key

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Par défaut
    Pour ceux que ça intéresse, je vous invite à aller voir cette réponse dans mon post sur le forum VBA.

    Arkham46 y propose une fonction de son crû qui (devrait) répondre à ma problématique.

  8. #8
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Très interressant, merci pour le lien.
    A priori cà devrait fonctionner sans modification dans vb. Juste faire un coller dans un module

  9. #9
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Par défaut
    Malheureusement,
    Citation Envoyé par marchand_de_sable
    Ma Collection est issue d'un SDK, certe, mais je ne vois pas vraiment où est le problème, ça reste une Collection, non ?
    => ben non...

    Plus précisément, cette librairie est fournie avec un SDK qui utilise son propre "moteur" VB. Elle est compatible avec VB, mais pas totalement : tous les objets définis dans cette librairie doivent être instanciés avec un type "Object", sans quoi, ça ne compile pas (erreur : incompatibilité de type).
    Donc déjà, j'imagine que la zone mémoire allouée à ces objets ne doit pas être gérée de la même manière que pour une Collection...

    En tout cas, merci à ceux qui se sont penchés sur mon probème.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Linq, est-il possible de filtrer une observable collection ?
    Par Golzinne dans le forum Silverlight
    Réponses: 2
    Dernier message: 14/11/2011, 20h31
  2. Réponses: 2
    Dernier message: 13/07/2011, 09h05
  3. Réponses: 16
    Dernier message: 19/01/2011, 16h42
  4. Réponses: 1
    Dernier message: 28/08/2009, 18h36
  5. [E-00] Collection dans un objet, est-ce possible ?
    Par Contrec dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/12/2008, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo