Dictionary-Objekt |
Erstellbar
Ja
Bibliothek
Microsoft Scripting Runtime
Beschreibung
Das Dictionary-Objekt ähnelt dem Collection-Objekt, basiert jedoch ungefähr auf dem assoziativen Perl-Array. Genau wie ein Array oder ein Collection-Objekt enthält das Dictionary-Objekt so genannte Elemente oder Mitglieder, die wiederum Daten enthalten. Ein Dictionary-Objekt kann beliebige Daten enthalten, auch Objekte und andere Dictionary-Objekte. Zum Zugriff auf den Wert dieser Dictionary-Elemente verwenden Sie eindeutige Schlüssel (oder benannte Werte), die mit den Daten gespeichert werden. Dies unterscheidet sich von der Verwendung der Ordinalposition des Elements in einem Array. Deshalb eignet sich ein Dictionary-Objekt ideal für den Zugriff auf Daten, die mit einem eindeutigen benannten Wert verknüpft sind. Sie können auf jedes in einem Dictionary-Objekt gespeicherte Element zugreifen, indem Sie das Konstrukt For Each ...Next verwenden. Es wird jedoch keine Variante mit dem im Dictionary-Objekt gespeicherten Datenwert zurückgegeben, sondern eine Variante mit dem Schlüssel, der dem Mitglied zugeordnet ist. Sie müssen diesen Schlüssel dann an die Methode Item übergeben, um das Mitglied abzurufen, wie im folgenden Beispiel gezeigt:
    Dim vKey
    Dim sItem, sMsg
    Dim oDict

    Set oDict =  CreateObject("Scripting.Dictionary")
    oDict.Add "One", "Engine"
    oDict.Add "Two", "Wheel"
    oDict.Add "Three", "Tire"
    oDict.Add "Four", "Spanner"

    For Each vKey In oDict
       sItem = oDict.Item(vKey)
       sMsg = sMsg & sItem & vbCrLf
    Next

    MsgBox sMsg
Eigenschaften des Dictionary-Objekts
Das Dictionary-Objekt hat die folgenden vier Eigenschaften:
Eigenschaft | Beschreibung
CompareMode | Bestimmt die Reihenfolge der Textvergleiche in der Eigenschaft Item
Count | Gibt die Gesamtanzahl der Elemente im Dictionary an
Item | Bewirkt das Einstellen oder Abrufen eines bestimmten Datenelements im Dictionary
Key | Benennt einen vorhandenen Schlüssel um
Methoden des Dictionary-Objekts
Das Dictionary-Objekt unterstützt die folgenden fünf Methoden:
Methode | Beschreibung
Add | Fügt dem Dictionary ein Element und den zugehörigen Schlüssel hinzu
Exists | Bestimmt, ob ein bestimmter Schlüssel im Dictionary vorhanden ist
Keys | Gibt alle Schlüssel im Dictionary zurück
Remove | Entfernt ein Element aus dem Dictionary
Remove All | Entfernt alle Daten aus dem Dictionary

Methode Dictionary.Add |
Syntax
    dictionaryobject.Add key, item
dictionaryobject Verwendung: Erforderlich Datentyp: Dictionary-Objekt Ein Verweis auf ein Dictionary-Objekt. key Verwendung: Erforderlich Datentyp: Beliebig Ein Schlüsselwert, der im Dictionary-Objekt nur einmal vorkommt. item Verwendung: Erforderlich Datentyp: Beliebig Das Element, das dem Dictionary hinzugefügt werden soll.
Beschreibung
Fügt dem angegebenen Dictionary-Objekt einen Schlüssel und das zugehörige Element hinzu.
Wichtige Regeln
Wenn der Schlüssel nicht eindeutig ist, wird der Laufzeitfehler 457 ausgegeben. In dieser Fehlermeldung werden Sie darauf hingewiesen, dass der Schlüssel bereits mit einem Element dieser Kollektion verknüpft ist. item kann einen beliebigen Datentyp haben, auch Objekte und andere Dictionary-Objekte.
Beispiel
In diesem Beispiel wird ein Dictionary-Objekt verwendet, um die Abkürzungen und vollständigen Namen von US-Bundesstaaten zu speichern.
    Dim StateCode, StateName
    Dim StateDict
    Dim Key

    Set StateDict = CreateObject("Scripting.Dictionary")

    StateCode = "CA"
    StateName = "California"
    StateDict.Add StateCode, StateName

    StateCode = "NY"
    StateName = "New York"
    StateDict.Add StateCode, StateName

    StateCode = "MI"
    StateName = "Michigan"
    StateDict.Add StateCode, StateName

    Key = "NY"
    MsgBox StateDict.Item(Key)
Tipps zur Programmierung
Die Reihenfolge der Mitglieder in einem Dictionary-Objekt ist offiziell nicht definiert. Deshalb ist es nicht möglich, die Position von einzelnen Mitgliedern zu steuern oder einzelne Mitglieder auf Grundlage ihrer Position im Dictionary-Objekt abzurufen. Ihr Code sollte daher keine Annahmen in Bezug auf die Position individueller Elemente in Dictionary-Objekten enthalten. Nachdem Sie einen Schlüssel und das zugehörige Datenelement hinzugefügt haben, können Sie den Schlüssel mit der Nur-Schreiben-Eigenschaft Key ändern. Verwenden Sie das Dictionary-Objekt zum Speichern von Tabellen und besonders zum Speichern von einzelnen Datenelementen, die logisch über einen Schlüsselwert abgerufen werden können. Das Dictionary-Objekt eignet sich nicht zum Speichern von Datensätzen mit mehreren Feldern. Für solche Fälle sind Klassen besser geeignet. Normalerweise speichern Sie einen Datensatz, indem Sie dem Dictionary ein Array hinzufügen, das die Feldwerte des Datensatzes darstellt. Das Zuweisen von Arrays zu Elementen im Dictionary-Objekt ist jedoch keine geeignete Programmiermethode, da einzelne Elemente des Arrays nicht mehr direkt bearbeitet werden können, nachdem sie dem Dictionary hinzugefügt wurden.
Siehe auch
Eigenschaft Dictionary.Key

Eigenschaft Dictionary.CompareMode |
Datentyp
Long
Beschreibung
Bewirkt das Einstellen oder die Rückgabe des Modus, mit dem die Schlüssel in einem Dictionary-Objekt verglichen werden.
Wichtige Regeln
CompareMode kann nur für ein Dictionary festgelegt werden, das keine Daten enthält. Die Eigenschaft CompareMode kann einen der beiden folgenden Werte haben: 0, Binär Dies ist der Standardwert. Die Schlüssel werden Byte für Byte mit einem String verglichen, um festzustellen, ob eine Übereinstimmung gegeben ist. 1, Text Beim Vergleich der Schlüssel mit einem String wird die Groß- und Kleinschreibung nicht berücksichtigt. Außerdem kann der Wert von CompareMode größer als 2 sein, um die Gebietsschema-ID (LCID) zu definieren, die für den Vergleich verwendet werden soll.
Tipps zur Programmierung
- Die Eigenschaft CompareMode muss nur dann explizit eingestellt werden, wenn Sie nicht den binären Standardvergleich verwenden möchten. Die Scripting Runtime-Typenbibliothek definiert Konstanten (BinaryCompare und TextCompare), die anstelle der numerischen Entsprechungen verwendet werden können. Dazu haben Sie drei Möglichkeiten. Erstens können Sie die Konstanten selbst definieren, indem Sie dem Skript folgenden Code hinzufügen:
      Const BinaryCompare = 0
      Const TextCompare = 1
  Zweitens können Sie die entsprechenden Konstanten vbBinaryCompare und vbTextCompare verwenden, die in der VBScript-Bibliothek definiert sind. Und drittens können Sie im Rahmen der ASP-Programmierung die METADATA-Direktive verwenden, um auf die Scripting Runtime-Typenbibliothek zuzugreifen. Wenn Sie ein Windows Script Host-Skript entwickeln, können Sie die folgende Zeile in eine Windows Script Host-Datei (.wsf) einfügen, um den Zugriff auf die Konstanten von der Scripting Runtime-Typenbibliothek zu ermöglichen:
      <reference GUID="{420B2830-E718-11CF-893D-00A0C9054228}" />
Die Eigenschaft CompareMode gibt an, ob die Groß- und Kleinschreibung berücksichtigt wird, wenn die vorhandenen Schlüsselnamen mit dem Argument key der Methoden Add und Exists sowie der Eigenschaften Item und Key des Dictionary-Objekts verglichen werden. Bei BinaryCompare wird die Groß- und Kleinschreibung berücksichtigt, bei TextCompare dagegen nicht. Standardmäßig wird die Groß- und Kleinschreibung beim Vergleich berücksichtigt.

Eigenschaft Dictionary.Count |
Datentyp
Long
Beschreibung
Eine schreibgeschützte Eigenschaft, die die Anzahl der Schlüssel-/Elementpaare in einem Dictionary-Objekt zurückgibt.
Wichtige Regeln
Diese Eigenschaft gibt die tatsächliche Anzahl der Elemente im Dictionary zurück. Wenn Sie die Eigenschaft Count zur Iteration der Elemente im Dictionary verwenden, würde der Code deshalb in etwa folgendermaßen aussehen:
    Dim ctr
    For ctr = 0 to dictionary.Count - 1
       ' do something
    Next

Methode Dictionary.Exists |
Syntax
    dictionaryobject.Exists(key)
dictionaryobject Verwendung: Erforderlich Datentyp: Dictionary-Objekt Ein Verweis auf ein Dictionary-Objekt. key Verwendung: Erforderlich Datentyp: String Der gesuchte Schlüsselwert.
Rückgabewert
Boolesch
Beschreibung
Bestimmt, ob der angegebene Schlüssel im Dictionary-Objekt vorhanden ist.
Wichtige Regeln
Gibt True zurück, wenn der angegebene Schlüssel im Dictionary-Objekt vorhanden ist. Andernfalls lautet die Rückgabe False.
Tipps zur Programmierung
Wenn Sie die Eigenschaft Item verwenden, um das Element eines nicht vorhandenen Schlüssels zurückzugeben, oder wenn Sie einem nicht vorhandenen Schlüssel einen neuen Schlüssel zuweisen, wird der nicht vorhandene Schlüssel dem Dictionary zusammen mit einem leeren Element hinzugefügt. Um dies zu vermeiden, sollten Sie vor dem Fortfahren mit der Eigenschaft Exists sicherstellen, dass der Schlüssel im Dictionary vorhanden ist. Die Einstellung der Eigenschaft CompareMode des Dictionary-Objekts bestimmt, wie key mit den vorhandenen Schlüsselwerten verglichen wird.
Beispiel
    If oDict.Exists(strOldKey) Then
        oDict.Key(strOldKey) = strNewKey
    End If

Eigenschaft Dictionary.Item |
Syntax
Die Syntax zum Einstellen eines Elements lautet:
    dictionaryobject.Item(key) = item
Die Syntax zur Rückgabe eines Elements lautet:
    value = dictionaryobject.Item(key)
dictionaryobject Verwendung: Erforderlich Datentyp: Dictionary-Objekt Ein Verweis auf ein Dictionary-Objekt. key Verwendung: Erforderlich Datentyp: String Ein eindeutiger String-Schlüssel für dieses Dictionary-Objekt. item Verwendung: Optional Datentyp: Beliebig Die mit key verknüpften Daten.
Datentyp
Beliebig
Beschreibung
Bewirkt das Einstellen oder die Rückgabe des Datenelements, das mit dem angegebenen Schlüssel im Dictionary-Objekt verknüpft werden soll.
Wichtige Regeln
Die Eigenschaft Item ist Standardmitglied des Dictionary-Objekts. Der Datentyp entspricht dem zurückgegebenen Element. Im Gegensatz zur Eigenschaft Item der meisten anderen Objekte kann die Eigenschaft Item des Dictionary-Objekts gelesen und geschrieben werden. Wenn Sie item auf einen nicht vorhandenen Schlüssel einstellen, wird der Schlüssel dem Dictionary hinzugefügt, und das Element wird mit einer Art "implizitem Hinzufügen" mit dem Schlüssel verknüpft.
Tipps zur Programmierung
Bei einem Dictionary-Objekt ist es nicht möglich, ein Element nach seiner Ordinalposition abzurufen. Wenn Sie beim Versuch, ein Element abzurufen, einen nicht vorhandenen Schlüssel angeben, verhält sich das Dictionary auf unerwartete Weise: key wird dem Dictionary-Objekt zusammen mit einem leeren Element hinzugefügt. Deshalb sollten Sie vor dem Einstellen oder der Rückgabe eines Elements die Methode Exists verwenden, wie im Beispiel gezeigt. Wenn das Element, das zugewiesen oder aus dem Dictionary-Objekt abgerufen werden soll, selbst ein Objekt ist, sollten Sie unbedingt das Schlüsselwort Set verwenden, wenn Sie das Element einer Variablen oder dem Dictionary-Objekt zuweisen. Der Wert der Eigenschaft CompareMode des Dictionary-Objekts bestimmt, wie key mit den Mitgliedsschlüsseln verglichen wird. Die Tatsache, dass die Eigenschaft Item des Dictionary-Objekts sowohl gelesen als auch geschrieben werden kann, hat Nachteile und Vorteile. Ein Vorteil liegt darin, dass ein vorhandenes Datenelement sich einfach überschreiben oder ersetzen lässt, da die Eigenschaft Item gelesen und geschrieben werden kann: Sie weisen einfach einen neuen Wert zu, wie bei jeder anderen Eigenschaft. Das Dictionary-Objekt sollte grundsätzlich nicht verwendet werden, um Formular- oder Abfragedaten im HTML-Format auf Sitzungsebene in einer ASP-Anwendung zu speichern. Da es sich beim Dictionary-Objekt um ein COM-Objekt mit Apartment-Threaded-Struktur handelt, bewirkt dies, dass die Anwendung auf einen einzelnen Ausführungs-Thread reduziert wird.
Beispiel
In diesem Beispiel dient das Dictionary-Objekt als Tabelle, aus der der Name des Bundesstaates abgerufen wird, dessen Abkürzung der Benutzer eingegeben hat. Im Folgenden wird die HTML-Seite gezeigt, die die Benutzerinformationen an den Server übermittelt:
    <HTML>
    <HEAD><TITLE>Dictionary Object Example</TITLE></HEAD>
    <BODY>
    Enter your name and location: <P>
    <FORM METHOD=POST ACTION=dictobj.asp>
    Your name:
    <INPUT TYPE="Text" NAME="VisitorName" /><P>
    Your location:
    <INPUT TYPE="Text" NAME="City" />,
    <INPUT TYPE="Text" NAME="State" SIZE=2 /> <P>
    <INPUT TYPE="Submit" VALUE="Submit" />
    </FORM>
    <BODY>
    </HTML>
Im Folgenden wird die ASP-Seite gezeigt, die die vom Benutzer gesendeten Informationen abruft, kodiert und aus dem Dictionary-Objekt den vollständigen Namen des Bundesstaates abruft:
    <HTML>
    <HEAD>
    <TITLE>ASP Page for the Dictionary Object Example</TITLE>
    </HEAD>
    <BODY>

                <% Show Greeting %>

    <SCRIPT LANGUAGE="VBScript" RUNAT="Server">

    Sub ShowGreeting(  )
       Dim StateDict
       Dim ClientName, ClientState

       ' Initialize dictionary
    Set StateDict = Server.CreateObject("Scripting.Dictionary")
    StateDict.Add "NY", "New York"
    StateDict.Add "CA", "California"
    StateDict.Add "FL", "Florida"
    StateDict.Add "WA", "Washington"
    StateDict.Add "MI", "Michigan"
    StateDict.Add "MA", "Massachusetts"
    StateDict.Add "MN", "Minnesota"
    ' add other states

    ClientName = Server.HTMLEncode(Request.Form("VisitorName"))
    ClientState = Server.HTMLEncode(Request.Form("State"))

    Response.Write("Hello, " & ClientName & ". <P>")
    Response.Write("We are pleased to have a visitor from ")
       Response.Write(StateDict.Item(ClientState) & "!")
    End Sub
    </SCRIPT>
    </BODY>
    </HTML>

Methode Dictionary.Items |
Syntax
    dictionaryobject.Items
dictionaryobject Verwendung: Erforderlich Datentyp: Dictionary-Objekt Ein Verweis auf ein Dictionary-Objekt.
Rückgabewert
Ein Varianten-Array.
Beschreibung
Gibt ein Array zurück, das alle Elemente im angegebenen Dictionary-Objekt enthält.
Wichtige Regeln
Das zurückgegebene Varianten-Array basiert grundsätzlich auf Null, und der Datentyp entspricht dem der Elemente im Dictionary-Objekt.
Tipps zur Programmierung
- Der direkte Zugriff auf die Mitglieder des Dictionary-Objekts ist nur über ihre Schlüsselwerte möglich. Mit der Methode Items können Sie jedoch die Daten aus dem Dictionary in einem Varianten-Array ablegen, das auf Null basiert. Anschließend ist der Zugriff auf die Datenelemente wie bei einem Array mit dem normalen Verfahren möglich, wie der folgende Code zeigt:
      Dim vArray
      vArray = DictObj.Items
      For i = 0 to DictObj.Count -1
          Response.Write vArray(i) & "<P>"
      Next I
Die Methode Item ruft nur die in einem Dictionary-Objekt gespeicherten Elemente ab. Zum Abrufen aller Schlüssel des Dictionary-Objekts können Sie die Methode Keys aufrufen.
Siehe auch
Methode Dictionary.Keys

Eigenschaft Dictionary.Key |
Syntax
    dictionaryobject.Key(key) = newkey
dictionaryobject Verwendung: Erforderlich Datentyp: Dictionary-Objekt Ein Verweis auf ein Dictionary-Objekt. key Verwendung: Erforderlich Datentyp: String Der Schlüssel eines vorhandenen Dictionary-Elements. newkey Verwendung: Erforderlich Datentyp: String Ein neuer, eindeutiger Schlüssel für dieses Dictionary-Element.
Datentyp
String.
Beschreibung
Ersetzt einen vorhandenen Schlüssel durch einen neuen Schlüssel.
Wichtige Regeln
Die Eigenschaft Key kann nur geschrieben werden. key, der vorhandene Schlüsselwert, muss im Dictionary vorhanden sein. Andernfalls wird ein Fehler verursacht. newkey muss eindeutig sein und darf noch nicht im Dictionary vorhanden sein. Andernfalls wird ein Fehler verursacht. Die Eigenschaft CompareMode des Dictionary-Objekts bestimmt, wie key und newkey mit vorhandenen Schlüsselwerten verglichen werden.
Beispiel
    Private Function ChangeKeyValue(sOldKey, sNewKey)
    'Assumes oDictionary is a public object
        If oDictionary.Exists(sOldKey) Then
            oDictionary.Key(sOldKey) = sNewKey
            ChangeKeyValue = True
        Else
            ChangeKeyValue = False
        End If
    End Function
Tipps zur Programmierung
Mit der Eigenschaft Key kann der Name eines vorhandenen Schlüssels geändert werden. Verwenden Sie die Methode Add, um dem Dictionary-Objekt einen neuen Schlüssel und den zugehörigen Wert hinzuzufügen. Mit der Methode Keys können Sie die Namen aller Schlüssel abrufen. Dies ist besonders dann nützlich, wenn Sie die Schlüsselnamen oder den Inhalt des Dictionary-Objekts nicht kennen. Der Versuch, den Schlüsselnamen abzurufen, verursacht einen Fehler. Ein solcher Vorgang wäre unlogisch, da Sie im Prinzip den Schlüsselnamen angeben würden, um den Schlüsselnamen abzurufen. Auch der Versuch, einen Schlüsselnamen zu ändern, der dem Dictionary noch nicht hinzugefügt wurde, löst einen Fehler aus. Die Verwendung einer Schleife For Each...Next zur Iteration der Mitglieder eines Dictionary-Objekts bewirkt einen impliziten Aufruf der Eigenschaft Key. Das heißt, dass jede Iteration der Schleife statt eines Datenelements einen Schlüssel zurückgibt. Zum Abrufen der Daten eines Mitglieds müssen Sie dann den Schlüsselwert verwenden, um über die Eigenschaft Item auf die Daten zuzugreifen. Dies wird im Beispiel für die Eigenschaft Dictionary.Item veranschaulicht.

Methode Dictionary.Keys |
Syntax
    dictionaryobject.Keys
dictionaryobject Verwendung: Erforderlich Datentyp: Dictionary-Objekt Ein Verweis auf ein Dictionary-Objekt.
Rückgabewert
Ein String-Array.
Beschreibung
Gibt ein Array zurück, das alle Schlüsselwerte im angegebenen Dictionary-Objekt enthält.
Wichtige Regeln
Das zurückgegebene Array ist immer ein Varianten-Array, das auf Null basiert und einen String-Datentyp hat.
Tipps zur Programmierung
Mit der Methode Keys werden nur die Schlüssel abgerufen, die in einem Dictionary-Objekt gespeichert sind. Mit der Methode Items können Sie alle Elemente des Dictionary-Objekts abrufen. Um ein bestimmtes Datenelement erneut aufzurufen, verwenden Sie die Eigenschaft Item des Dictionary-Objekts.
Beispiel
    Dim vArray
    vArray = DictObj.Keys
    For i = 0 to DictObj.Count -1
        Response.Write vArray(i) & "<BR>"
    Next

Methode Dictionary.Remove |
Syntax
    dictionaryobject.Remove key
dictionaryobject Verwendung: Erforderlich Datentyp: Dictionary-Objekt Ein Verweis auf ein Dictionary-Objekt. key Verwendung: Erforderlich Datentyp: String Der Schlüssel, der zu dem Element gehört, das entfernt werden soll.
Beschreibung
Entfernt sowohl den angegebenen Schlüssel als auch die zugehörigen Daten (das heißt das Element) aus dem Dictionary.
Wichtige Regeln
Wenn key nicht vorhanden ist, wird der Laufzeitfehler 32811 ausgegeben. In dieser Fehlermeldung werden Sie darauf hingewiesen, dass das Element nicht gefunden wurde.

Methode Dictionary.RemoveAll |
Syntax
    dictionaryobject.RemoveAll
dictionaryobject Verwendung: Erforderlich Datentyp: Dictionary-Objekt Ein Verweis auf ein Dictionary-Objekt.
Beschreibung
Leert das Dictionary. Dabei werden alle Schlüssel und die zugehörigen Daten aus dem Dictionary entfernt.
Tipps zur Programmierung
Wenn Sie nicht den ganzen Inhalt des Dictionary-Objekts, sondern nur bestimmte Mitglieder entfernen möchten, verwenden Sie stattdessen die Methode Remove.