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 :

Contrôle des key d'une collection


Sujet :

VB 6 et antérieur

  1. #1
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    929
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 929
    Points : 312
    Points
    312
    Par défaut Contrôle des key d'une collection
    Bonjour,

    Dans mon programme je récupère un temps, la clef (jour/mois/année heure:minute:seconde) et une donnée (mesure) associée à ce temps.

    Je stock sa dans une collection mais on ne doit pas avoir la même clef, malheureusement cela peut arrivé (au changement d'heure par exemple).

    Donc il faut que je contrôle sa et que j'ajoute une seconde à mon temps pour garder la données qui lui est associée mais sans dénaturer m'a courbe que je vais effectuer après.(les mesures étant effectuées toutes les 10 minutes au minimum).

    Donc j'ai pensé au - For Each X in Coll , de comparer m'a key et d'ajouter éventuellement 1 secondes. Mais dans ce cas il faut que je recommence à vérifier que ma key n'existe pas depuis le début de la collection. Il faut que réinitialise le compteur du "for each".

    Je pense aussi qu'il y a moyen de faire quelque chose avec la gestion des exceptions mais je maîtrise pas bien cette partie dans Vb6.

    Pourriez vous m'aider.

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    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 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Et en utilisant une donnée temps mesurée en ms ?
    Sinon avec un Dictionary à la place de la collection il est facile de vérifier si une clé existe avec .Exists(key)

  3. #3
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    929
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 929
    Points : 312
    Points
    312
    Par défaut
    Citation Envoyé par DarkVader Voir le message
    Et en utilisant une donnée temps mesurée en ms ?
    Sinon avec un Dictionary à la place de la collection il est facile de vérifier si une clé existe avec .Exists(key)

    Il y a des dictionary dans VB6 ? Je les connais en .net et c'est carrément plus pratique, mais je ne les ai pas vu en VB6. Je vais regardé plus attentivement.

    Si non j'ai pallié au problème avec les évènement d'erreur mais bon j'aime mais sa utiliser les erreurs pour faire mon programme.

  4. #4
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    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 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Citation Envoyé par megamario Voir le message
    Il y a des dictionary dans VB6 ? .../...
    Le même qu'avec .net : librairie Microsoft Scripting Runtime

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 243
    Points : 328
    Points
    328
    Par défaut
    Ils ne sont pas en standard en v6. Il faut référencer le "Microsoft Scripting Runtime".

    Sinon, même si c'est pas très propre (ce code n'est pas testé),
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Public function CleExiste(byref Coll as collection,byval Cle As Variant) As boolean
      'Renvoi l'objet dans la collection correspondant à Key.
      'Renvoi NOTHING si Key ne correspond à aucune fiche.
    	dim o as object
    	CleExiste=false
      On Error Resume Next  
      set o = Coll(Cle)
    	CleExiste=( err.number=0)	
    End function
    edit : grillé par DarkVader, mis trop de temps à rédiger ma réponse

  6. #6
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    929
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 929
    Points : 312
    Points
    312
    Par défaut
    Citation Envoyé par 250rgv Voir le message
    Ils ne sont pas en standard en v6. Il faut référencer le "Microsoft Scripting Runtime".

    Sinon, même si c'est pas très propre (ce code n'est pas testé),
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Public function CleExiste(byref Coll as collection,byval Cle As Variant) As boolean
      'Renvoi l'objet dans la collection correspondant à Key.
      'Renvoi NOTHING si Key ne correspond à aucune fiche.
    	dim o as object
    	CleExiste=false
      On Error Resume Next  
      set o = Coll(Cle)
    	CleExiste=( err.number=0)	
    End function
    edit : grillé par DarkVader, mis trop de temps à rédiger ma réponse

    C'est exactement ce que j'ai fait (dans le principe), quand je parlais d'utilisé la gestion des erreurs.

    Merci

    Mais étant débutant, une question s'impose pour moi. Utiliser les erreurs pour réalisé un programme, moi, cela me choque un peut. Pour moi, dans ma petite tête, la gestion des erreurs doit justement être utilisé afin de prévenir un fonctionnement non prévu, par exemple la lecture d'un fichier qui n'existe pas. Mais je m’aperçois que l'on s'en sert quand même souvent pour facilité la programmation. Comme ici avec le code proposé.

    Est-ce vraiment normale ou faudrait le plus possible ne pas s'en servir.

    Je demande sa car je débute donc, et j'ai pas l'intention de rester dans ma boite actuelle et je voudrais savoir ce qui se pratique et ce qu'il convient de faire. Au lycée ont a très peut vu la gestion des erreurs et du coup ont essayaient par tout les moyens de ne pas s'en servir.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 243
    Points : 328
    Points
    328
    Par défaut
    Mais étant débutant, une question s'impose pour moi... Comme ici avec le code proposé.
    Je pense comme toi mais comme la collection n'a pas de méthode keyexists (ou équivalent) ben, on fait comme on peut (enfin moi ).
    D'autant plus que je n'ai découvert les dictionnaires (et le scripting runtime) que bien longtemps après avoir eu besoin de gérer ce type de fonctionnalité dans une collection.
    Jamais compris pourquoi elle n'existe pas d'ailleurs A croire que les dev. VB n'ont jamais utilisé leur implémentation

    edit : je viens de m'apercevoir que le commentaire de mon code n'est pas le bon
    En fait, c'est :
    'si la clef existe, on obtiendra l'item correspondantà la clef "cle", sinon, une erreur est levée. Donc, s'il n'y a pas d'erreur, la clef existe.

  8. #8
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    929
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 929
    Points : 312
    Points
    312
    Par défaut
    Citation Envoyé par 250rgv Voir le message
    Je pense comme toi mais comme la collection n'a pas de méthode keyexists (ou équivalent) ben, on fait comme on peut (enfin moi ).
    D'autant plus que je n'ai découvert les dictionnaires (et le scripting runtime) que bien longtemps après avoir eu besoin de gérer ce type de fonctionnalité dans une collection.
    Jamais compris pourquoi elle n'existe pas d'ailleurs A croire que les dev. VB n'ont jamais utilisé leur implémentation

    edit : je viens de m'apercevoir que le commentaire de mon code n'est pas le bon
    En fait, c'est :
    'si la clef existe, on obtiendra l'item correspondantà la clef "cle", sinon, une erreur est levée. Donc, s'il n'y a pas d'erreur, la clef existe.

    Merci.

    Pour le code, comme j'ai dit j'ai fait exactement pareil dans me principe

Discussions similaires

  1. OnMouseEnter et OnMouseLeave sur des items d'une collection
    Par petitprince dans le forum Composants VCL
    Réponses: 3
    Dernier message: 17/09/2007, 20h57
  2. [Reflect] connaître la classe des éléments d'une collection
    Par El Saigneur dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 12/06/2007, 12h04
  3. Réponses: 5
    Dernier message: 13/07/2006, 16h05
  4. Réponses: 4
    Dernier message: 22/12/2005, 11h43
  5. [VBA-E] Pb sur la key d'une collection
    Par niro75 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/10/2005, 20h06

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