vbscript - Wie durchquere ich eine Sammlung in klassischem ASP?

Translate

Ich möchte in der Lage sein:

For Each thing In things
End For

CLASSIC ASP - NICHT .NET!

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Was auch immer Ihre [Dinge] sind, müssen außerhalb von VBScript geschrieben werden.

In VB6Sie können eine benutzerdefinierte Sammlungsklasse schreibenDann müssen Sie eine ActiveX-DLL kompilieren und auf Ihrem Webserver registrieren, um darauf zugreifen zu können.

Quelle
Translate

Etwas wie das?

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

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

Sehenwww.w3schools.com.

Wenn Sie Schlüssel und Werte zuordnen möchtenVerwenden Sie ein Wörterbuchobjektstattdessen:

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
Quelle
Translate

Am nächsten kommen Sie mit einem Wörterbuch (wie von Pacifika erwähnt).

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

Aber ich durchlaufe meine Wörterbücher wie eine Sammlung

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

Sie können das gesamte Wörterbuch auf diese Weise durchlaufen und die Werte aufschreiben, die folgendermaßen aussehen würden:

Scott
20

Sie können dies auch tun

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

Welches würde produzieren

 Name: Scott
 Age: 20
Quelle
Translate

Ein Ansatz, den ich zuvor verwendet habe, besteht darin, eine Eigenschaft der Sammlung zu verwenden, die ein Array zurückgibt, über das iteriert werden kann.

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

Iterieren wie:

Set things = New MyCollection
For Each thing in things.Items
    ...
Next
Quelle
Translate

Wie Brett sagte, ist es besser, eine vb-Komponente zum Erstellen von Sammlungen zu verwenden. Wörterbuchobjekte werden in ASP nur für bestimmte bedarfsgerechte Anwendungen verwendet.

Quelle
Translate

Seien Sie sehr vorsichtig bei der Verwendung von VB Script Dictionary Object!
Entdecken Sie einfach diese "Autovivikation"Ding, heimisch auf diesem Objekt:http://en.wikipedia.org/wiki/Autovivification

Wenn Sie also Werte vergleichen müssen, verwenden Sie NIEMALS einen Boolen-Vergleich wie:
If objDic.Item("varName") <> "" Then...
Dieser WilleautomatischSchlüssel hinzufügen "varName"zum Wörterbuch (falls nicht vorhanden, mit einem leeren Wert), um den booleschen Ausdruck weiter auszuwerten.

Verwenden Sie bei Bedarf stattdessenIf objDic.Exists("varName").

Verbringen Sie mit diesem Mcrosoft nur ein paar Tage damit, Wände zu klopfen. "Merkmal"...
vbscript-dictionary-object-create-a-key-das-nie-existiert-aber-in-einem-anderen-Objekt vorhanden ist

Quelle