Wie durchlaufen ich eine Sammlung im klassischen ASP?

stimmen
13

Ich möchte tun können:

For Each thing In things
End For

CLASSIC ASP - NICHT .NET!

Veröffentlicht am 05/08/2008 um 14:30
quelle vom benutzer
In anderen Sprachen...                            


6 antworten

stimmen
12

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

Siehe www.w3schools.com .

Wenn Sie möchten , Schlüssel zuordnen und Werte verwenden , um ein Dictionary - Objekt statt:

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
Beantwortet am 11/08/2008 um 13:39
quelle vom benutzer

stimmen
3

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

In VB6, können Sie eine kundenspezifische Sammlung Klasse schreiben , dann müssen Sie ein ActiveX - DLL und registrieren Sie es auf Ihrem Webserver kompilieren , darauf zuzugreifen.

Beantwortet am 05/08/2008 um 14:42
quelle vom benutzer

stimmen
2

Die nächstgelegene Sie gehen zu bekommen ist 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 Schleife durch meine Wörterbücher wie eine Sammlung

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

Sie können die Werte der gesamten Wörterbuch auszuschreiben auf diese Weise eine Schleife durch die wie folgt aussehen:

Scott
20

Sie können dies auch tun

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

Was würde produzieren

 Name: Scott
 Age: 20
Beantwortet am 16/09/2008 um 20:09
quelle vom benutzer

stimmen
1

Ein Ansatz, den ich verwendet habe, bevor ist eine Eigenschaft der Sammlung zu verwenden, die ein Array zurückgibt, die iteriert werden kann.

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

Iterate wie:

Set things = New MyCollection
For Each thing in things.Items
    ...
Next
Beantwortet am 23/11/2008 um 05:40
quelle vom benutzer

stimmen
0

Seien Sie sehr vorsichtig über die Verwendung VB Script Dictionary - Objekt!
Nur entdecken dieses „ autovivication “ Ding, gebürtig zu diesem Objekt: http://en.wikipedia.org/wiki/Autovivification

Also, wenn Sie Werte vergleichen müssen, verwenden Sie NIEMALS einen Boolen Vergleich wie:
If objDic.Item("varName") <> "" Then...
Dies wird automatisch den Schlüssel hinzufügen „ varName“ auf das Wörterbuch (wenn es nicht vorhanden ist , mit einem leeren Wert), um weiter zu machen Evaluierung der boolesche Ausdruck.

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

Verbringen Sie einfach ein paar Tage Wände, mit diesem Mcrosoft "Klopfen Feature " ...
Vbscript-Wörterbuch-Objekt-Erstellung-a-Schlüssel-die-nie-existierte aber präsente-in-einem anderen Objekt-

Beantwortet am 21/05/2014 um 09:43
quelle vom benutzer

stimmen
0

Als Brett sagte, ist es besser, eine vb Komponente zu verwenden Sammlungen zu erstellen. Dictionary-Objekte sind nicht sehr häufig in ASP, es sei denn für spezifische Notwendigkeit basierter Anwendungen eingesetzt.

Beantwortet am 23/09/2008 um 07:15
quelle vom benutzer

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