Uso di una struttura dati Array Associativo. Un Array Associativo, detto anche Dictionary, permette di memorizzare una collezione di oggetti accessibili mediante una parola-chiave invece che con il solo numero d'ordine, come accade negli array convenzionali. Un esempio di dictionary si puo' trovare anche in ASP: il metodo Request.QueryString("NomeParametro") rappresenta a tutti gli effetti un array associativo, al quale si accede appunto usando dei nomi simbolici anziche' gli indici. Ecco un esempio che mette in eveidenza le differenze: Array convenzionale: myArray(0) = request("LastAccess") myArray(1) = request("Username") Array associativo: dictArray("Username") = request("Username") myArray("LastAccess") = request("LastAccess") Con Windows Scripting Host, la Microsoft mette a disposizione un semplice oggetto Dictionary, meno intuitivo da usare rispetto ad un normale array; inoltre non permette di usare la struttura come se fosse un normale array (e quindi accedere con gli indici); ne' di salvare il contenuto su file. Per questo ho deciso di scrivere un Componente ActiveX che implementasse un Dictionary più evoluto. Tale componente, gratuito, dovrebbe essere allegato a questo articolo, e comprende anche altri oggetti che presentero' in un altro momento. La documentazione online completa ed il componente stesso si trovano su: http://www.paipai.net/texts/components.htm Un array associativo puo' essere utile in molte circostanze; ad esempio e' molto comodo quando si deve creare una struttura simile ad un "carrello elettronico" (come nei negozi online). E' infatti sufficiente associare un nuovo Dictionary ad ogni utente che si collega , usare il codice del prodotto come chiave di accesso e la quantita' di prodotto come valore associato alla chiave. Il codice necessario a creare l'oggetto, che va messo nel file global.asa dell'applicazione ASP, e' il seguente: <% REM creazione e distruzione dell'oggetto dictionary, che va messo nel global.asa sub session_onStart set Session("objDict") = Server.CreateObject("midori.dictionary") end sub sub session_onEnd set Session("objDict") = nothing end sub %> Questa che segue e' una pagina che gestisce il carrello (lo modifica, aggiorna e visualizza): <% Il nome di questo file è car.asp if isNull(Session("objDict")) or isEmpty(Session("objDict")) then set Session("objDict") = Server.CreateObject("midori.dict") end if set objDict = Session("objDict") if request("submit") <> "" then REM aggiorna il carrello strProductID = request("PID") intQuantity = request("Quantity") delete = request("delete") if delete = "ok" then objDict.remove(strProductID) else objDict(strProductID) = objDict(strProductID) + cint(intQuantity) end if end if %>