¿Cómo atravieso una colección en ASP clásico?

votos
13

Quiero ser capaz de hacer:

For Each thing In things
End For

ASP CLÁSICO - ¡NO .NET!

Publicado el 05/08/2008 a las 14:30
fuente por usuario
En otros idiomas...                            


6 respuestas

votos
3

Cualesquiera que sean sus [cosas] deben escribirse fuera de VBScript.

En VB6, puede escribir una clase de Colección personalizada , luego tendrá que compilar en una DLL ActiveX y registrarla en su servidor web para acceder a ella.

Respondida el 05/08/2008 a las 14:42
fuente por usuario

votos
12

¿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

Vea www.w3schools.com .

Si desea asociar claves y valores, use un objeto de diccionario en su 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
Respondida el 11/08/2008 a las 13:39
fuente por usuario

votos
2

Lo más cercano que va a obtener es usar un diccionario (como lo menciona 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 recorro mis diccionarios como una colección

For Each Entry In objDictionary
  Response.write objDictionary(Entry) & "<br />"
Next

Puede recorrer todo el diccionario de esta manera escribiendo los valores que se verían así:

Scott
20

También puedes hacer esto

For Each Entry In objDictionary
  Response.write Entry & ": " & objDictionary(Entry) & "<br />"
Next

Que produciría

 Name: Scott
 Age: 20
Respondida el 16/09/2008 a las 20:09
fuente por usuario

votos
0

Como dijo Brett, es mejor usar un componente vb para crear colecciones. Los objetos de diccionario no se usan con mucha frecuencia en ASP a menos que sea para aplicaciones basadas en necesidades específicas.

Respondida el 23/09/2008 a las 07:15
fuente por usuario

votos
1

Un enfoque que he usado anteriormente es usar una propiedad de la colección que devuelve una matriz, que puede repetirse.

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
Respondida el 23/11/2008 a las 05:40
fuente por usuario

votos
0

Tenga mucho cuidado en el uso de diccionario de objetos de VB Script!
Sólo descubrir este " autovivication cosa", nativa en este objeto: http://en.wikipedia.org/wiki/Autovivification

Por lo tanto, cuando es necesario comparar los valores, utilice NUNCA una comparación boolen como:
If objDic.Item("varName") <> "" Then...
Esto automáticamente añada la clave " varName" al diccionario (si no existe, con un valor vacío), con el fin de llevar a cabo la evaluación la expresión booleana.

Si es necesario, utilice en su lugar If objDic.Exists("varName").

Simplemente, pasar unos días golpeando paredes, con este "Mcrosoft función " ...
VBScript-diccionario-objeto-crear-a-clave, que existía-nunca-pero-presente-en-otra-objeto

Respondida el 21/05/2014 a las 09:43
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more