VBScript Dictionnaire Existe Méthode Retourne Toujours True
Ce que je fais mal? De mes tests, objDic.existe JAMAIS donne de Faux!
dim objDic
set objDic = createobject("scripting.dictionary")
objDic.add "test","I have not been deleted"
wscript.echo objDic.item("test") 'Displays -- I have not been deleted
objDic.remove "test"
wscript.echo """" & objDic.item("test") & """" 'Displays -- ""
if objDic.exists("test") then wscript.echo """" & objDic.item("test") & """" 'Displays -- ""
OriginalL'auteur user66001 | 2012-05-07
Vous devez vous connecter pour publier un commentaire.
Aussi près que je peux dire, un Objet Dictionary Clé est créée par le simple référencement c'est comme si elle n'existait pas.
Y a plus de code, vous pouvez essayer de prouver/tester ma théorie. J'ai l'habitude d'utiliser MsgBox au lieu de WScript.Echo, comme vous le verrez dans mon code.
Invité par la nouvelle réponse, dans un réexamen de cette question, je suis tout de même confus quant à la façon dont la création d'une clé si elle n'existe pas est utile, comme je l'ai été lorsque j'ai examiné cette question. Quelqu'un peut-il expliquer les raisons derrière tout cela? Je ne peux que supposer que ce qui est enracinée dans comp. sci. des théories sur le dictionnaire des objets??
Comme un pragmatique programmeur, je m'inquiète moins sur le pourquoi quelque chose comme ceci est conçu de la façon dont il est et vous inquiétez plus au sujet de se souvenir de ces sortes de bizarreries.
OriginalL'auteur HK1
Eu le même problème ici...
Dans mon code, il y a un tableau dynamique de dictionnaires.
Certaines entrées ont la touche "HAUT", certains ne l'est pas.
Pour tester la présence de la clé pour chaque entrée revenait toujours vrai:
Le débogueur créé un "HAUT" pour chaque dictionary_entry si j'ai regardé la variable.
Avait pour supprimer à la fois dictionary_entry et dictionary_array de regardé les variables pour obtenir le code de travail de droit.
OriginalL'auteur Juliano CWB
Supprimer tous regardé les variables à partir de l'IDE qui ont quelque chose à voir avec votre dictionnaire. Il est reproductible. Vous pouvez causer/corriger le comportement de cette façon (Outlook 2010 VBA IDE). Un peu comme l'effet d'observation, je suppose . . .
-M
OriginalL'auteur user3429488
Ce problème a été me causer beaucoup d'ennuis.
S'avère que je courais un "Si" la fonction de la touche plus tôt dans le code et qu'il était donc de l'ajouter au dictionnaire.
De sorte que la valeur de la fonction si est pas ajouté au dictionnaire, mais la clé est ajouté.
OriginalL'auteur Cassiopeia
Accepté la réponse n'a pas répondu à ma question. J'imagine que les autres donc je poste ma solution, car ce fil est le premier résultat dans google.
La clé sera créé par défaut si elle n'existe pas. Les dictionnaires sont destinés à ajouter des entrées si elles n'existent pas, d'où le ci-dessous renvoie toujours vrai.
Depuis la clé est créé lors de l'essai pour son existence, la valeur n'a pas été défini. Ci-dessous permettra de tester si la Clé n'a pas de valeur associée. Bien sûr, cela ne fonctionnera pas avec votre dictionnaire si vous avez des valeurs vides.
Malheureusement @Jon je ne peut pas répliquer vos résultats sur XP ou Win 7 dans mes tests
OriginalL'auteur Jon