Frage

Ich möchte Folgendes können:

For Each thing In things
End For

KLASSISCHES ASP – NICHT .NET!

War es hilfreich?

Lösung

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

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

Andere Tipps

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

Sehen www.w3schools.com.

Wenn Sie Schlüssel und Werte zuordnen möchten Verwenden Sie ein Wörterbuchobjekt stattdessen:

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

Das Beste, was Sie erreichen werden, ist die Verwendung eines Wörterbuchs (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

Auf diese Weise können Sie das gesamte Wörterbuch durchlaufen und die Werte ausschreiben, die wie folgt aussehen würden:

Scott
20

Sie können dies auch tun

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

Was produzieren würde

 Name: Scott
 Age: 20

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 Sie wie folgt:

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

Wie Brett sagte, ist es besser, eine VB-Komponente zum Erstellen von Sammlungen zu verwenden.Wörterbuchobjekte werden in ASP nicht sehr häufig verwendet, es sei denn, es handelt sich um spezifische, bedarfsorientierte Anwendungen.

Seien Sie bei der Verwendung von VB Script Dictionary Object SEHR vorsichtig!
Entdecken Sie das einfach“Autovivikation" Ding, nativ für dieses 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 Wille automatisch füge den Schlüssel hinzu "varName" zum Wörterbuch (falls nicht vorhanden, mit einem leeren Wert), um den booleschen Ausdruck weiter auszuwerten.

Bei Bedarf stattdessen verwenden If objDic.Exists("varName").

Verbringen Sie einfach ein paar Tage damit, mit diesem Mcrosoft an Wände zu klopfen.Besonderheit"...
vbscript-Wörterbuch-Objekt-erstellt-einen-Schlüssel-der-nie-existierte-aber-in-einem-anderen-Objekt vorhanden ist

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top