Как пройти коллекцию в классическом ASP?

голоса
13

Я хочу быть в состоянии сделать:

For Each thing In things
End For

CLASSIC ASP - НЕ .NET!

Задан 05/08/2008 в 14:30
источник пользователем
На других языках...                            


6 ответов

голоса
12

Что-то вроде этого?

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

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

См www.w3schools.com .

Если вы хотите связать ключи и значения использовать объект словаря вместо:

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
Ответил 11/08/2008 d 13:39
источник пользователем

голоса
3

Независимо от ваших [вещей] которые должны быть написаны за пределами VBScript.

В VB6, вы можете написать пользовательский класс коллекции , то вам нужно скомпилировать к ActiveX DLL и зарегистрировать его на веб - сервер для доступа к нему.

Ответил 05/08/2008 d 14:42
источник пользователем

голоса
2

Ближайший вы собираетесь получить использует словарь (как уже упоминалось Pacifika)

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

Но я Переберите мои словарях как коллекции

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

Вы можете цикл через весь словарь таким образом выписывая ценности, которые будут выглядеть следующим образом:

Scott
20

Вы также можете сделать это

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

Какой бы производить

 Name: Scott
 Age: 20
Ответил 16/09/2008 d 20:09
источник пользователем

голоса
1

Один подход, который я использовал раньше, чтобы использовать свойство коллекции, которая возвращает массив, который может перемещаться.

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

Перебор, как:

Set things = New MyCollection
For Each thing in things.Items
    ...
Next
Ответил 23/11/2008 d 05:40
источник пользователем

голоса
0

Будьте очень внимательно на использовании VB Script словарь объектов!
Просто откройте для себя этот « autovivication » вещь, произрастающих на этом объекте: http://en.wikipedia.org/wiki/Autovivification

Поэтому, когда вам нужно сравнить значения, НИКОГДА не используйте boolen сравнения , как:
If objDic.Item("varName") <> "" Then...
Это будет автоматически добавить ключ « varName» в словарь (если он не существует, с пустым значением), для того , чтобы нести на оценку логическое выражение.

При необходимости, используйте вместо этого If objDic.Exists("varName").

Просто провести несколько дней стучат стены, с этим «Mcrosoft особенностью » ...
VBScript-словарь объектно-создание-а-ключа , который, никогда не существовал, но по настоящему времени -в-другого-объект

Ответил 21/05/2014 d 09:43
источник пользователем

голоса
0

Как сказал Бретт, его лучше использовать компонент VB для создания коллекций. Словарь объекты не очень широко используется в ASP, если для конкретных приложений, основанных на необходимости.

Ответил 23/09/2008 d 07:15
источник пользователем

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