¿Cómo puedo recorrer una colección en ASP clásico?
-
08-06-2019 - |
Pregunta
Quiero ser capaz de hacer:
For Each thing In things
End For
ASP CLÁSICO - NO .NET!
Solución
Sea cual sea su [cosas] se necesita ser escrito fuera de VBScript.
En VB6, usted puede escribir una clase de Colección Personalizada, entonces usted necesitará compilar una DLL de ActiveX y registrar en su servidor web para acceder a ella.
Otros consejos
Algo como esto?
dim cars(2),x
cars(0)="Volvo"
cars(1)="Saab"
cars(2)="BMW"
For Each x in cars
response.write(x & "<br />")
Next
Ver www.w3schools.com.
Si desea asociar claves y valores el uso de un objeto dictionary lugar:
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
Lo más cercano que vas a conseguir es el uso de un Diccionario (como se ha mencionado por Pacifika)
Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.CompareMode = vbTextCompare 'makes the keys case insensitive'
objDictionary.Add "Name", "Scott"
objDictionary.Add "Age", "20"
Pero yo bucle a través de mis diccionarios como una colección
For Each Entry In objDictionary
Response.write objDictionary(Entry) & "<br />"
Next
Puede recorrer la totalidad del diccionario de este modo, la escritura de los valores que tendría este aspecto:
Scott
20
También se puede hacer esto
For Each Entry In objDictionary
Response.write Entry & ": " & objDictionary(Entry) & "<br />"
Next
Que se iba a producir
Name: Scott
Age: 20
Un método que he usado antes es el uso de una propiedad de la colección que devuelve una matriz, que puede ser iterado.
Class MyCollection
Public Property Get Items
Items = ReturnItemsAsAnArray()
End Property
...
End Class
Iterar como:
Set things = New MyCollection
For Each thing in things.Items
...
Next
Como Brett dijo, su mejor utilizar un componente de vb para crear colecciones.Diccionario de objetos no son muy utilizados en ASP menos para la necesidad específica de las aplicaciones basadas en.
Ser MUY cuidadosamente sobre el uso de VB Script Objeto de Diccionario!
Acabo de descubrir este "autovivication"cosa, nativo de este objeto: http://en.wikipedia.org/wiki/Autovivification
Así que, cuando usted necesita para comparar valores, NUNCA use un boolen comparación como:
If objDic.Item("varName") <> "" Then
...
Esto automáticamente agregar la clave "varName
"para el diccionario (si no existe, con un valor vacío) , para llevar a cabo la evaluación de la expresión booleana.
Si es necesario, use en su lugar If objDic.Exists("varName")
.
Acabo de pasar un par de días golpeando las paredes, con este Mcrosoft "característica"...
vbscript-diccionario-objeto-crear-una-clave-que-que nunca existió-pero-presente-en-otro-objeto