Hoe kan ik steken een collectie in de klassieke ASP?

stemmen
13

Ik wil in staat zijn om te doen:

For Each thing In things
End For

CLASSIC ASP - NIET NET!

De vraag is gesteld op 05/08/2008 om 14:30
bron van user
In andere talen...                            


6 antwoorden

stemmen
12

Iets zoals dit?

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

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

Zie www.w3schools.com .

Als u wilt toetsen koppelen en waarden gebruiken een woordenboek object in plaats daarvan:

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
antwoordde op 11/08/2008 om 13:39
bron van user

stemmen
3

Wat uw [dingen] worden geschreven moeten worden buiten VBScript.

In VB6, kunt u een aangepaste collectie klasse te schrijven , dan zul je nodig hebt om te compileren van een ActiveX-DLL en registreer het op uw webserver om toegang te krijgen.

antwoordde op 05/08/2008 om 14:42
bron van user

stemmen
2

De dichtstbijzijnde je gaat krijgen is het gebruik van een Dictionary (zoals genoemd door Pacifika)

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

Maar ik loop door mijn woordenboeken als een verzameling

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

U kunt lus door het hele woordenboek op deze manier het schrijven van de waarden die er als volgt uit:

Scott
20

U kunt dit ook doen

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

Wat zou produceren

 Name: Scott
 Age: 20
antwoordde op 16/09/2008 om 20:09
bron van user

stemmen
1

Een benadering die ik eerder hebt gebruikt is om een ​​eigenschap van de collectie die een array, die kan worden herhaald meer dan retourneert.

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

Herhalen als:

Set things = New MyCollection
For Each thing in things.Items
    ...
Next
antwoordde op 23/11/2008 om 05:40
bron van user

stemmen
0

Wees zeer voorzichtig op met behulp van VB Script Woordenboek Object!
Net ontdek deze " autovivication " ding, inheemse op dit object: http://en.wikipedia.org/wiki/Autovivification

Dus, als je nodig hebt om waarden te vergelijken, gebruik nooit een Boolen vergelijking als:
If objDic.Item("varName") <> "" Then...
Dit zal automatisch toe te voegen op de toets " varName" om het woordenboek (als het niet bestaat, met een lege waarde), om mee te nemen op het evalueren de booleaanse uitdrukking.

Indien nodig, te gebruiken in plaats If objDic.Exists("varName").

Slechts een paar dagen kloppen muren, met deze Mcrosoft " functie " ...
VBScript-dictionary-object-creëren-a-key-die-nooit-bestond-maar-present-in-een ander object

antwoordde op 21/05/2014 om 09:43
bron van user

stemmen
0

Zoals Brett zei, is het beter om een ​​vb component gebruiken om collecties aan te maken. Woordenboek objecten worden niet erg vaak gebruikt in ASP, tenzij voor specifieke behoefte gebaseerde applicaties.

antwoordde op 23/09/2008 om 07:15
bron van user

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