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.