La creazione di un progetto da zero in Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
L'oggetto Dictionary (Articolo completo)

"[...] L'oggetto Dictionary è l'equivalente di una matrice associativa PERL." Le voci che s'intende inserire in questo oggetto (al quale ci si può riferire per semplicità come ad una successione di tanti termini, proprio come una lista della spesa), possono essere di qualsiasi natura.
Essi vengono presi uno ad uno, gli viene assegnato un valore di riconoscimento univoco e successivamente sono inseriti in una matrice.
Com'è facile intuire il valore di cui si parla poco sopra è necessario per compiere l'operazione di estrazione del dato ricercato dalla matrice che lo contiene.
La particolarità che facilita di molto tale compito sta nella possibilità di assegnare a questo valore univoco (meglio se chiamato chiave), un numero intero, una stringa o qualsiasi altro tipo di dato all'infuori di una matrice.
Facciamo un esempio intuitivo: siamo interessati a compilare una lista della spesa, ad esempio:
pane
latte
giornale
mangime per piccioni
Il modo più diretto per svolgere tale compito consiste naturalmente nell'assegnare ad ogni prodotto che dovremo acquistare un valore numerico in base alla posizione che tale oggetto occupa nella lista. Ad esempio:
pane (=1)
latte (=2)
giornale (=3)
mangime per piccioni (=4)
Niente però ci vieta di utilizzare non valori numerici ma stringhe di quanti caratteri vogliamo. Ad esempio:
pane (=aa)
latte (=ab)
giornale (=ac)
mangime per piccioni (=ad)
Se si ricorda l'articolo riguardante i files .INI, si capirà immediatamente che l'oggetto da acquistare è il valore mentre il dato ad esso assegnato è la chiave.
Tutto l'oggetto Dictionary non è altro quindi che una lista di valori e delle rispettive chiavi. Ad esempio:
valore = pane ; chiave = 1
valore = latte chiave = 2
valore = giornale ; chiave = 3
valore = mangime per piccioni ; chiave =4

Come trasferire questi concetti finora teorici in Visual Basic? La procedura si rivela più facile del previsto: innanzitutto si è esordito parlando di Dictionary come oggetto. Questo dovrebbe immediatamente ricordare che per poter utilizzare un oggetto bisogna averlo preventivamente creato.
La creazione dell'oggetto avviene dando vita prima ad una variabile generica e poi specificandone la natura, in questo modo:

Dim ListaDellaSpesa
Set ListaDellaSpesa = CreateObject(Scripting.Dictionary)

L'inserimento nella lista della spesa dei quattro prodotti che c'interessano (e l'assegnazione ad ognuno di essi di una chiave), avviene facendo uso del metodo Add.
Notare che nell'inserimento di ogni oggetto prima si indica la chiave e successivamente il valore, secondo questo schema:

OggettoDictionary.Add "chiave", "valore"

OggettoDictionary corrisponde al nostro "ListaDellaSpesa". Per cui se vogliamo inserire i quattro prodotti citati prima:

ListaDellaSpesa.Add "1", "pane"
ListaDellaSpesa.Add "2", "latte"
ListaDellaSpesa.Add "3", "giornale"
ListaDellaSpesa.Add "4", "mangime per piccioni"

Si è parlato poco fa di operazione di estrazione. Naturalmente quello che c'interessa è estrarre una voce conoscendone la chiave. Ad esempio si vuole trovare quel prodotto che occupa la terza posizione della lista della spesa. Questo è possibile attraverso il metodo Item. Item ha una struttura del tipo:

OggettoDictionary.Item(chiave) [= nuovavoce]

dove [= nuovavoce] è un termine opzionale necessario solamente nel caso in cui si voglia assegnare una nuova voce ad una chiave esistente. Ad esempio:

ListaDellaSpesa.Item(1) = "pasta"

sostituisce alla voce pane la voce pasta, mantenendo la stessa chiave ossia 1.
Sicuramente più semplice è la proprietà Count che permette di contare tutti gli elementi che compongono la matrice. Se volessimo visualizzare in una finestra di messaggio tutte la lista delle voci:

Dim lista As String
For i = 1 To ListaDellaSpesa.Count - 1
lista = lista & vbCrlf
Next i
MsgBox lista

Così come si può modificare una voce, attraverso la proprietà Key è possibile sostituire una vecchia chiave con una nuova:

ListaDellaSpesa(2) = "20"

in questo modo abbiamo sostituito alla chiave 2 (che corrisponde a "latte"), la chiave 20 che corrisponderà sempre a "latte".
La proprietà CompareMode invece imposta e restituisce la modalità di confronto per le chiavi che si riferiscono alle voci. La sintassi è del tipo:

OggettoDictionary.CompareMode[ = confronto]

dove [ = confronto] è opzionale e se incluso definisce le regole per il confronto tra due chiavi. Tali regole possono essere:

vbUseCompareOption Esegue un confronto utilizzando l'impostazione dell'istruzione Option Compare.
vbBinaryCompare Esegue un confronto binario.
vbTextCompare Esegue un confronto di testo.
vbDatabaseCompare Solo per Microsoft Access. Esegue un confronto in base alle informazioni del database.

Come capire a questo punto se la chiave specificata è inclusa nell'oggetto Dictionary? Col medodo Exists che ritorna True in caso affermativo e False in caso contrario. Se per esempio si vuole verificare la presenza della terza chiave:

MsgBox ListaDellaSpesa.Exists(3)

Per rimuovere invece una singola voce con la rispettiva chiave sarà necessario utilizzare il metodo Remove:

ListaDellaSpesa.Remove(1)

Se invece si volesse rimuovere tutte le coppie chiave/voce da un oggetto Dictionary, si dovrebbe utilizzare il metodo RemoveAll:

ListaDellaSpesa.RemoveAll




Archivio:ndexed
Lezioni Commenta questa lezione Invia la tua guida Avviso per le nuove lezioni
Proponi un argomento

Visual Basic Italia© copyright 2000 - tutti i diritti riservati
E-mail:
vbitalia@libero.it