Sortieren von Scripting Wörterbuch mit Daten gefüllt

Veralteter Haftungsausschluss für KB-Inhalte

Dieser Artikel wurde für Produkte geschrieben, für die Microsoft keinen Support mehr anbietet. Deshalb wird dieser Artikel im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.

Zusammenfassung

Ein Scripting Dictionary-Objekt entspricht einem assoziativen PERL-Array, in dem Informationen in einem Array aus eindeutigen Schlüssel und Daten gespeichert. Da diese Informationen gespeichert werden, nicht sortierte Array auflisten gibt Informationen zurück Reihenfolge gespeichert wurde. Dieser Artikel dient die SortDictionary() Funktion definieren, die den Inhalt eines Dictionary-Objekts mit Daten aufgefüllt, Schlüssel oder Element sortiert.

Weitere Informationen

Im folgenden Codebeispiel definiert zwei Konstanten, DictKey und DictItem, die von der Funktion SortDictionary() verwendet werden. SortDictionary() -Funktion nimmt zwei Parameter ein Objekt zuvor erstellten Skripts Wörterbuch und Konstanten fest, ob des Wörterbuchs Schlüssel oder Elemente sortieren.

Const dictKey  = 1Const dictItem = 2

Function SortDictionary(objDict,intSort)
' declare our variables
Dim strDict()
Dim objKey
Dim strKey,strItem
Dim X,Y,Z

' get the dictionary count
Z = objDict.Count

' we need more than one item to warrant sorting
If Z > 1 Then
' create an array to store dictionary information
ReDim strDict(Z,2)
X = 0
' populate the string array
For Each objKey In objDict
strDict(X,dictKey) = CStr(objKey)
strDict(X,dictItem) = CStr(objDict(objKey))
X = X + 1
Next

' perform a a shell sort of the string array
For X = 0 to (Z - 2)
For Y = X to (Z - 1)
If StrComp(strDict(X,intSort),strDict(Y,intSort),vbTextCompare) > 0 Then
strKey = strDict(X,dictKey)
strItem = strDict(X,dictItem)
strDict(X,dictKey) = strDict(Y,dictKey)
strDict(X,dictItem) = strDict(Y,dictItem)
strDict(Y,dictKey) = strKey
strDict(Y,dictItem) = strItem
End If
Next
Next

' erase the contents of the dictionary object
objDict.RemoveAll

' repopulate the dictionary with the sorted information
For X = 0 to (Z - 1)
objDict.Add strDict(X,dictKey), strDict(X,dictItem)
Next

End If

End Function

Ein funktionsfähiges Beispiel

Im folgenden Beispiel wird diese Funktion verwendet.

Hinweis: Alle Kommentare wurden aus der tatsächlichen Sortierfunktion in diesem Beispiel entfernt.


Kopieren Sie den folgenden ASP-Code und speichern Sie sie in einem Ordner als Sortdemo.asp mit Skripts mindestens Zugriff:
<%@LANGUAGE="VBSCRIPT"%><% Option Explicit %>
<html>
<head><title>Dictionary Sorting</title></head>
<body>
<%

Dim d, i

Const dictKey = 1
Const dictItem = 2

Set d = Server.CreateObject("Scripting.Dictionary")

d.Add "3", "Delta"
d.Add "1", "Foxtrot"
d.Add "4", "Bravo"
d.Add "2", "Echo"
d.Add "6", "Alpha"
d.Add "5", "Charlie"

Response.Write "<p>Before Sorting:<br>"
For Each i In d
Response.Write i & "=" & d(i) & "<br>"
Next

Response.Write "<p>By Key:<br>"
SortDictionary d,dictKey
For Each i In d
Response.Write i & "=" & d(i) & "<br>"
Next

Response.Write "<p>By Item:<br>"
SortDictionary d,dictItem
For Each i In d
Response.Write d(i) & "=" & i & "<br>"
Next
%>
</body>
</html>
<%
Function SortDictionary(objDict,intSort)
Dim strDict()
Dim objKey
Dim strKey,strItem
Dim X,Y,Z
Z = objDict.Count
If Z > 1 Then
ReDim strDict(Z,2)
X = 0
For Each objKey In objDict
strDict(X,dictKey) = CStr(objKey)
strDict(X,dictItem) = CStr(objDict(objKey))
X = X + 1
Next
For X = 0 to (Z - 2)
For Y = X to (Z - 1)
If StrComp(strDict(X,intSort),strDict(Y,intSort),vbTextCompare) > 0 Then
strKey = strDict(X,dictKey)
strItem = strDict(X,dictItem)
strDict(X,dictKey) = strDict(Y,dictKey)
strDict(X,dictItem) = strDict(Y,dictItem)
strDict(Y,dictKey) = strKey
strDict(Y,dictItem) = strItem
End If
Next
Next
objDict.RemoveAll
For X = 0 to (Z - 1)
objDict.Add strDict(X,dictKey), strDict(X,dictItem)
Next
End If
End Function
%>

Wenn angezeigt, sollte die folgende Ausgabe angezeigt:
Before Sorting:3=Delta
1=Foxtrot
4=Bravo
2=Echo
6=Alpha
5=Charlie

By Key:
1=Foxtrot
2=Echo
3=Delta
4=Bravo
5=Charlie
6=Alpha

By Item:
Alpha=6
Bravo=4
Charlie=5
Delta=3
Echo=2
Foxtrot=1


Microsoft bietet Programmierbeispiele lediglich zur Veranschaulichung, ohne ausdrückliche oder konkludente Gewährleistung. Dies beinhaltet, ist jedoch nicht beschränkt auf, konkludente Gewährleistungen der Tauglichkeit oder Eignung für einen bestimmten Zweck. Dieser Artikel setzt voraus, dass Sie mit der von Beispielen verwendeten Programmiersprache und den Tools, die zum Erstellen und Debuggen von Prozeduren verwendet werden, vertraut sind. Microsoft-Supportmitarbeiter können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, sie werden jedoch diese Beispiele nicht verändern um eine erweiterte Funktionalität aufzuzeigen oder Prozeduren entwickeln, die Ihren Anforderungen entsprechen.

Weitere Informationen zu verfügbaren Supportoptionen und zur Kontaktaufnahme mit Microsoft finden Sie auf der folgenden Microsoft-Website:

Referenzen

Weitere Informationen zu Microsoft scripting Technologies finden Sie in der Microsoft Developer Network-Website unter der folgenden URL:
Eigenschaften

Artikelnummer: 246067 – Letzte Überarbeitung: 08.01.2017 – Revision: 1

Feedback