Como faço para percorrer uma coleção em ASP clássico?

votos
13

Eu quero ser capaz de fazer:

For Each thing In things
End For

CLASSIC ASP - NÃO NET!

Publicado 05/08/2008 em 14:30
fonte usuário
Em outras línguas...                            


6 respostas

votos
12

Algo assim?

dim cars(2),x
cars(0)="Volvo"
cars(1)="Saab"
cars(2)="BMW"

For Each x in cars
  response.write(x & "<br />")
Next

Veja www.w3schools.com .

Se você deseja associar chaves e valores usar um objeto de dicionário em vez disso:

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
Respondeu 11/08/2008 em 13:39
fonte usuário

votos
3

Seja qual for o seu [coisas] são precisam ser escritas fora do VBScript.

Em VB6, você pode escrever uma classe de coleção personalizada , então você vai precisar para compilar para uma DLL ActiveX e registrá-lo no seu servidor web para acessá-lo.

Respondeu 05/08/2008 em 14:42
fonte usuário

votos
2

O mais próximo que você está indo para obter está usando um dicionário (como 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"

Mas eu loop através de meus dicionários como uma coleção

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

Você pode percorrer o dicionário inteiro dessa maneira de escrever os valores que ficaria assim:

Scott
20

Você também pode fazer isso

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

Que produziria

 Name: Scott
 Age: 20
Respondeu 16/09/2008 em 20:09
fonte usuário

votos
1

Uma abordagem que eu usei antes é usar uma propriedade da coleção que retorna uma matriz, que pode ser iterado.

Class MyCollection
    Public Property Get Items
        Items = ReturnItemsAsAnArray()
    End Property
    ...
End Class

Iteração como:

Set things = New MyCollection
For Each thing in things.Items
    ...
Next
Respondeu 23/11/2008 em 05:40
fonte usuário

votos
0

Tenha muito cuidado em usar VB Script Objecto de dicionário!
Apenas descobrir esta " autovivication coisa", nativo neste objeto: http://en.wikipedia.org/wiki/Autovivification

Então, quando você precisa comparar valores, NUNCA use uma comparação boolen como:
If objDic.Item("varName") <> "" Then...
Isto irá automaticamente adicionar a chave " varName" ao dicionário (se ele não existir, com um valor vazio), a fim de continuar a avaliar a expressão booleana.

Se necessário, use vez If objDic.Exists("varName").

Basta passar alguns dias batendo paredes, com este "Mcrosoft recurso " ...
-dicionário vbscript-objeto criando-as-a-key-que-nunca existiu-mas-presente-em-outra-objeto

Respondeu 21/05/2014 em 09:43
fonte usuário

votos
0

Como disse Brett, é melhor usar um componente vb para criar coleções. Dicionário objetos não são muito usados ​​em ASP menos para aplicações específicas baseadas em necessidades.

Respondeu 23/09/2008 em 07:15
fonte usuário

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