Dictionary
Info
Esempi
Linguaggio
Librerie
Formule
Ultimi Inseriti

 Login

 Password

Una dictionary è una struttura dati che permette di memorizzare coppie di valori sotto forma di chiave-valore. Ogni chiave deve essere univoca, e per ogni chiave c'è un valore associato. I dictionary sono simili alle Collections, ma offrono maggiore flessibilità e funzionalità aggiuntive, hanno la scomodità di essere in una libreria esterna da richiamare.

Dichiarazione
Volendo utilizzare una dichiarazione Early Binding dobbiamo prima di tutto creare il collegamento alla librerie del programma, le troviamo nel menù:
Strumenti --> Riferimenti selezionando Microsoft Scripting Runtime
Fatto questo possiamo inserire un oggetto dictionary all'interno del nostro codicie, in questo modo:
o in modo più compatto:

Volendo utilizzare una dichiarazione di tipo Late Binding sarà di questo tipo:
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")

Comparazione
Una proprietà importante da settare dopo aver creato l'oggetto è il CompareMode: deve essere impostato con il Dictionary vuoto.
  1. vbBinaryCompare: è l'opzione di default, il confronto è case-sensitive;
  2. vbTextCompare: con questa opzione maiusclole e minuscole sono considertate uguali.

Proprietà
AzioneCome fare
Tipo di comparazione della chiavidict.CompareMode
Aggiungere elementodict.Add Key, Value
dict(Key) = Value
Cambiare valore ad una chiavedict(Key) = Value
Togliere elementodict.Remove Key
l'array delle chiavidict.Keys
l'array degli elementidict.Items
Accedere all'elementoValue = dict(Key)
Verifica se l'elemento esistedict.Exists(Key)
Numero degli elementidict.Count
Svuotaredict.RemoveAll

Inserire/accedere ad un elemento
Oltre che utilizzando il metodo Add in questo modo:
dict.Add key:="Anna", item:=100
possiamo avere lo stesso risultato scrivendo:
dict("Anna") = 100
In questo modo il valore della voce sarà inserito se non esiste, modificato se esiste già

Scorrere gli elementi
Scorrendo le chiavi
Dim key As Variant
For Each key In dict.Keys
    Debug.Print key, dict(key)
Next key
Scorrendo gli indici:
Dim i As Long
For i = 0 To dict.Count - 1
    Debug.Print dict.keys()(i), dict.items()(i)
Next i


Differenze fra Dictionary e Collection
Proviamo a chiarire le differenze fra Collection e Dictionary (che possono sembrare molto simili) e quando è meglio usare l'uno o l'altro tipo di dati:
  1. hanno velocità superiori alle Collection, specie utilizzando l'Early Binding;
  2. le chiavi sono obbligatorie e possono essere di qualsiasi tipo di dato;
  3. è previsto un metodo nativo per verificare se una chiave esiste (Exists) senza usare una funzione aggiuntiva;
  4. le chiavi sono sempre accessibili facilmente tramite la proprietà Keys
  5. è possibile modificare un valore associato ad una chiave senza cancellare e reinserire il valore;
  6. l'iserimento dei valori tramite assegnazione rende il codice più chiaro;
  7. gli elmenti possono essere cancellati tutti senza dover cancellare l'oggetto e ricrearlo.
 

data4idea srls - PIva 01881000937 - info@data4idea.it