Jak mogę przechodzić do kolekcji w klasycznej ASP?

głosy
13

Chcę być w stanie to zrobić:

For Each thing In things
End For

CLASSIC ASP - NIE NET!

Utwórz 05/08/2008 o 14:30
źródło użytkownik
W innych językach...                            


6 odpowiedzi

głosy
12

Coś takiego?

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

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

Zobacz www.w3schools.com .

Jeśli chcesz skojarzyć klucze i wartości użyć słownika obiekt zamiast:

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
Odpowiedział 11/08/2008 o 13:39
źródło użytkownik

głosy
3

Niezależnie [rzeczy] są potrzebne, aby być napisane poza VBScript.

W VB6, można napisać klasę Collection Niestandardowe , a następnie trzeba skompilować do ActiveX DLL i zarejestrować go na serwer do niego dostęp.

Odpowiedział 05/08/2008 o 14:42
źródło użytkownik

głosy
2

Najbliżej masz zamiar dostać się za pomocą słowniku (jak wspomniano przez Pacifika)

Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.CompareMode = vbTextCompare 'makes the keys case insensitive'
objDictionary.Add "Name", "Scott"
objDictionary.Add "Age", "20"

Ale pętli moich słowników jak zbiór

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

Można pętlę przez cały słowniku ten sposób wypisywanie wartości, które będzie wyglądać następująco:

Scott
20

Można też to zrobić

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

Które wytwarzają

 Name: Scott
 Age: 20
Odpowiedział 16/09/2008 o 20:09
źródło użytkownik

głosy
1

Jedno podejście Użyłem przed jest użycie własność kolekcji, która zwraca tablicę, która może należy powtórzyć na drugą.

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

Iteracyjne jak:

Set things = New MyCollection
For Each thing in things.Items
    ...
Next
Odpowiedział 23/11/2008 o 05:40
źródło użytkownik

głosy
0

Należy bardzo ostrożnie przy użyciu VB Script obiektu Dictionary!
Wystarczy odkryć tę „ autovivication ” rzeczy, native na tym obiekcie: http://en.wikipedia.org/wiki/Autovivification

Tak więc, gdy trzeba porównać wartości, NIGDY nie używać boolen porównania, takich jak:
If objDic.Item("varName") <> "" Then...
to będzie automatycznie dodać klucz „ varName” do słownika (jeśli nie istnieje, z pustą wartość), w celu prowadzenia oceny logiczna ekspresja.

W razie potrzeby użyć zamiast If objDic.Exists("varName").

Wystarczy spędzić kilka dni pukanie ściany, z tym "Mcrosoft funkcji " ...
VBScript słownika tworzenia obiektowo-a-key-która-nigdy nie istniała, ale obecne w-innym-Object

Odpowiedział 21/05/2014 o 09:43
źródło użytkownik

głosy
0

Jak powiedział Brett, że lepiej używać składnik VB do tworzenia kolekcji. Słownik obiekty nie są bardzo powszechnie stosowane w ASP chyba dla konkretnych aplikacji opartych potrzebie.

Odpowiedział 23/09/2008 o 07:15
źródło użytkownik

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