Vérifier s'il existe un enregistrement dans un VB6 collection?
J'ai hérité d'une large application VB6 à mon lieu de travail actuel. Je suis un peu d'apprentissage VB6 sur le travail et il y a un certain nombre de problèmes que je vais avoir. Le principal problème pour le moment est que je peux pas comprendre comment vérifier si une clé existe dans un objet de Collection. Quelqu'un peut-il aider?
Vous devez vous connecter pour publier un commentaire.
Ma fonction standard est très simple. Cela fonctionne quel que soit le type de l'élément, car elle ne prend pas la peine de faire toute cession, il ne fait que s'exécute la collection property get.
@Mark Biek Votre keyExists correspond le plus à mon niveau Exists() fonction. Pour faire la classe la plus utile pour COM-exposés des collections et la vérification des indices numériques, je vous recommande de changer sKey et myCollection de ne pas être tapé. Si la fonction est destiné à être utilisé avec une collection d'objets, " set " est nécessaire (sur la ligne où val est réglé).
MODIFIER: Il était sur écoute-moi que je n'ai jamais remarqué des exigences différentes pour un objet et la valeur en fonction Exists() fonction. J'ai très rarement utiliser des collections pour les non-objets, mais il semblait tellement parfait goulot d'étranglement pour un bug qui serait si dur pour traquer quand j'avais besoin de vérifier l'existence. Parce que erreur de manipulation échoue si un gestionnaire d'erreur, il est déjà actif, deux fonctions sont nécessaires pour obtenir un nouveau périmètre d'erreurs. Seule la Exists() fonction doit jamais être appelé:
Et de vérifier la fonctionnalité:
J'ai toujours fait ça avec une fonction comme ceci:
Comme l'a souligné Thomas, vous devez fixer un objet au lieu de le Laisser. Voici une fonction à partir de ma bibliothèque qui fonctionne pour la valeur et les types d'objet:
Comme il est également conseillé par Thomas, vous pouvez modifier le type de Collection pour Objet de généraliser cette. L' .Élément(clé) de la syntaxe est partagé par la plupart des classes de collection, de sorte qu'en fait, pourrait être utile.
MODIFIER Semble que j'ai été battu à coup de poing un peu par Thomas lui-même. Toutefois, pour faciliter la réutilisation personnellement, je préfère une seule fonction avec aucune privé dépendances.
En utilisant le gestionnaire d'erreur pour attraper les cas où la clé n'existe pas dans la Collection peut faire la correction avec "arrêt sur toutes les erreurs" option assez ennuyeux. Pour éviter les erreurs que j'ai assez souvent créer une classe qui a des objets stockés dans une Collection et toutes les clés dans un Dictionnaire. Dictionnaire a existe(clé) -fonction donc je ne peux appeler que avant d'essayer d'obtenir un objet de la collection. Vous ne pouvez stocker des chaînes de caractères dans un Dictionnaire, si une Collection est toujours nécessaire si vous avez besoin de stocker des objets.
L'état "erreur de manipulation échoue si un gestionnaire d'erreur, il est déjà actif" n'est que partiellement juste.
Vous pouvez avoir plusieurs gestionnaires d'erreur dans votre routine.
On peut donc accueillir les mêmes fonctionnalités dans une seule fonction.
Juste de réécrire votre code comme ceci:
Toutefois, si vous avez été seulement intégrer le code dans le TryNonObject section de la routine, cela donnerait les mêmes informations.
Une réussite pour les deux Objets, et non des objets.
Il permettra d'accélérer votre code pour les non-objets, cependant, puisque vous n'avez qu'à effectuer une seule déclaration pour affirmer que l'élément existe au sein de la collection.
Meilleure solution serait d'écrire un TryGet fonction. Beaucoup du temps que vous allez vérifier existe, puis obtenir l'élément. Gagner du temps en le faisant dans le même temps.
voir
http://www.visualbasic.happycodings.com/Other/code10.html
la mise en œuvre d'ici a l'avantage de également la possibilité de retourner l'élément trouvé, et travaille avec l'objet/types natifs (selon les commentaires).
reproduit ici puisque le lien n'est plus disponible:
Déterminer si un élément existe dans une collection
Le code suivant vous montre comment déterminer si un élément existe au sein d'une collection.
Alors que la recherche d'une fonction comme celle-ci je l'ai conçu comme suit.
Cela devrait aussi fonctionner avec des objets et non des objets sans attribuer de nouvelles variables.