Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Hashtable in VB

Ma guarda, ogni tanto posto anche io...
Domanda: conoscete qualche libreria, componente, modulo, classe o quel
che vi pare che realizzi una hash table in VB?
Mi spiego: ho bisogno di un oggetto che implementi una semantica del
tipo
V(o) -> x
Dove:
V = Nome della hashtable
o = Chiave della hash table (in teoria qualunque cosa, ma mi
accontento anche di stringhe)
x = Oggetto (leggi variabile) puntata dalla chiave
La collection di VB è assolutamente insufficiente perchè non mappa
stringhe, ma numeri e per me non va bene.
Esiste qualcosa?
Magari, dato che sono un po' pirla, in VB esiste già, ma non lo so 
Grazie
Marco Frazzoli

 Magari, dato che sono un po' pirla, in VB esiste già, ma non lo so
Se esiste già, sono un po' pirla anche io. ;-)
Ciao
*Roby*

Magari, dato che sono un po' pirla, in VB esiste già, ma non lo so 
Fratello ! ;-)
ciao, hal

 Esiste qualcosa?
Sul sito comune c'è una classe piuttosto semplice che ho fatto io.
Cerca XCollection tra i progetti Leonardo (librerie comuni).
Ciao

Microsoft ha incluso nella scripting Library un oggetto che si chiama
Dictionary che, oltre a fare quello che dici tu, è estremamente efficiente.
Io usandolo al posto di collezioni o recordset ho ottenuto incrementi di
tempi tra il 400% ed il 700%. Non l'ho paragonato al farmi una classe di
Hashtable personalizzata sul mio problema dato che non credo ne valga la
pena.
Al proposito vedi 
http://www.vb2themax.com/Item.asp?PageID=CodeBank&ID=411
in cui trovi un progetto in cui si comparano vari modi simili per fare una
cosa come quella che vuoi fare tu.
Saluti
Massimo



Eh?
A me risulta che
Collections 201-Indexing
Simple Collections, like the one above, provide a handy storage place when
you don't know how many data items you'll have. But as we saw with the
CVector, CList, and CStack classes, there are other ways to store a variable
number of items. The unique feature of Collections is that you can look up
items with string keys.
To do this, you specify the key as the second argument of the Add method.
Later you can use the key instead of an index to access the item.
Technically, you can make any string the key. You can also assign a string
key to each item in a Collection of integers. For example:
Do    s = GetName        ' Gets name from dialog or file    i = GetAge(s)
' Gets age from dialog or file    If s = sEmpty Then Exit Do    people.Add
i, s    ' Store data (age) first, then key (name)Loop
Now you have the age of each person stored in the items of a Collection.
Later you might need to get that data. You could access it like this:
iAge = people(7)
But the index merely reflects the order in which people were added and
probably isn't a significant value. You're much more likely to know the
person's name and use it when you need to look up the data:
iAge = people("George")
Quindi non capisco cosa ti manchi...
Per inciso, pare che le collection internamente siano doble linked list con
una hash table per le ricerche tramite stringa.
Ciaotutti,
*


Infatti l'ho detto che ero un pirla...
Direi che mi può andare bene...
Grazie Alessandro
Ciao
Marco


Ih, se dovessi fare ammenda per tutti gli errori di questo tipo che ho fatto
in vita mia... :P
Ad esempio in Delphi non riuscivo a leggere un variant, ogni volta che lo
aprivo mi dava in risposta un errore... Poi l'ho aperto con VB e ho scoperto
che la variabile che leggevo era di tipo VARIANT/ERROR, e quindi delphi
leggeva, correttamente, l'errore contenuto nel variant :P
Ciaotutti,
*

 Infatti l'ho detto che ero un pirla...
Eravamo pirla in due.
Ciao
*Roby*
P.S. Etimologico (sarà contento Pal)
"pirla" non è un insulto grave. In milanese significa "trottola" da cui la
frase: "girare come un pirla".


Si ma non e' l'unico significato... Esattamente come "dick" non e' solo il
diminutivo di Richard :P
Ciaotutti,
*

 quel che vi pare che realizzi una hash table in VB?
Tempo due giorni e ci sarà la mia sul Sito Comune. Dettagli tecnici: si 
tratta di un albero binario di ricerca (tutto VarPtr e CopyMemory, ma 
preferisco riscriverla usando una classe), ogni nodo è composto di hash, 
key, valore, e i due rami. L'hash è un Long calcolato a partire 
dall'indice stringa usando l'algoritmo descritto nella man page di Perl 
"perlguts", la key è la stringa originale, per poterla leggere a 
posteriori, il valore non ho ancora deciso se salvarlo come Variant o 
come classe CSmartPointer (altra mia creatura :)

 In ogni caso, non e' un insulto grave.
Qualche anno fa mi capitò di telefonare all'agenzia pubblicitaria Testa, e
mi rispose una signorina che con aria annoiata e voce nasale disse in
fretta: "testadicaaa...".
L'effetto fu esplosivo. ;-)
Ciao
*Roby*
P.S.
Bello l'esempio di Dick e Richard. Un punto anche per *Alessandro* ;-)


wrote:

^____^
ROTFL
Ciao,
Moreno
#sirri#@#morenosoft#.com
(togliete "#" dall'indirizzo)
Moreno Sirri VB Site - 
http://www.msvbsite.net
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.it-lang-vb.net
---------------------------------------------------------------------------

 diminutivo di Richard :P
Vuoi dire come c**k che non significa solo "Gallo"?
Ciao

 tratta di un albero binario di ricerca
Wow, non vedo l'ora! :)
Ho provato ad abbozzarne uno in VB ma il risultato è stato deludente :(
Potrà salvare anche l'intero contenuto su disco?
Ciao

Potrà salvare anche l'intero contenuto su disco?
Interessante domanda. Vedrò cosa riesco a combinare con le Property Bag


Potevi pure scriverlo :P
Ciaotutti,
*