Comment puis-je parcourir une collection classique ASP?
-
08-06-2019 - |
Question
Je veux être capable de faire:
For Each thing In things
End For
ASP CLASSIQUE - PAS .NET!
La solution
Quel que soit votre [choses] sont doivent être écrites en dehors de VBScript.
En VB6, vous pouvez écrire une classe de Collection Personnalisée, alors vous aurez besoin de compiler une DLL ActiveX et l'enregistrer sur votre serveur pour y accéder.
Autres conseils
Quelque chose comme cela?
dim cars(2),x
cars(0)="Volvo"
cars(1)="Saab"
cars(2)="BMW"
For Each x in cars
response.write(x & "<br />")
Next
Voir www.w3schools.com.
Si vous souhaitez associer des clés et des valeurs utiliser un objet dictionary au lieu de cela:
Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "Name", "Scott"
objDictionary.Add "Age", "20"
if objDictionary.Exists("Name") then
' Do something
else
' Do something else
end if
Le plus proche que vous allez obtenir est à l'aide d'un Dictionnaire (comme mentionné par Pacifika)
Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.CompareMode = vbTextCompare 'makes the keys case insensitive'
objDictionary.Add "Name", "Scott"
objDictionary.Add "Age", "20"
Mais je boucle mes dictionnaires comme une collection
For Each Entry In objDictionary
Response.write objDictionary(Entry) & "<br />"
Next
Vous pouvez faire une boucle à travers l'ensemble du dictionnaire de cette façon, écrire les valeurs qui ressemblerait à ceci:
Scott
20
Vous pouvez également le faire
For Each Entry In objDictionary
Response.write Entry & ": " & objDictionary(Entry) & "<br />"
Next
Qui permettrait de produire de
Name: Scott
Age: 20
Une approche que j'ai utilisé avant est d'utiliser une propriété de la collection qui renvoie un tableau, qui peut être itéré.
Class MyCollection
Public Property Get Items
Items = ReturnItemsAsAnArray()
End Property
...
End Class
Itérer comme:
Set things = New MyCollection
For Each thing in things.Items
...
Next
Comme Brett, a déclaré, de son mieux pour utiliser un composant visual basic pour créer des collections.Dictionnaire des objets ne sont pas très couramment utilisés dans les ASP moins que pour le besoin spécifique en fonction des applications.
Être TRÈS soigneusement à l'aide d'un Script VB Dictionnaire de l'Objet!
Viens de découvrir le "autovivication"chose, natif sur cet objet: http://en.wikipedia.org/wiki/Autovivification
Donc, lorsque vous avez besoin de comparer des valeurs, ne JAMAIS utiliser un boolen comparaison:
If objDic.Item("varName") <> "" Then
...
Ce sera automatiquement ajouter la clé "varName
"pour le dictionnaire (si elle n'existe pas, avec une valeur vide) , afin de mener à bien l'évaluation de l'expression booléenne.
Si nécessaire, utiliser à la place If objDic.Exists("varName")
.
Il suffit de passer quelques jours à frapper les murs, avec cette Mcrosoft "fonctionnalité"...
vbscript-dictionnaire-de l'objet de la création-d'un-clé-qui-jamais existé-mais-present-dans-l'autre-objet