Fare internet

E' come il lego, più pezzi ho più sono allegro
Seguci su Facebook Seguici su Twitter Iscrivita ai nostri Feed      Mandaci una mail

ASP: Creare array dinamici in ASP

Scritto da Fare-internet il 29 gennaio 2010 condividi condividi

Sebbene l’ASP non consenta nativamente l’utilizzo di array dinamici, con un po’ di trucchetti e di fantasia si reisce a creare una struttra analoga.

L’esempio che segue è allo stato embrionale ma in ogni caso funzionante ed utilizzabile.

La prima cosa da fare è definire una classe che chiameremo (con ovvio abuso di fantasia) arrayDinamico.

class arrayDinamico
        public vector()
        private appArray()
        public lastIndex
end class


In questa classe abbiamo definito 3 membri:
un array publico vector, un array privato appArray e una variabile lastIndex pubblica.

Ora possiamo aggiungere alla classe il costruttore:

class arrayDinamico
        public vector()
        private appArray()
        public lastIndex

        Private Sub Class_Initialize
             lastIndex = -1
        End Sub
end class

In pratica il costruttore non fa altro che porre a -1 lastIndex quando creiamo un’istanza della classe stessa.

Possiamo a questo punto aggiungere il metodo push() che aggiunge il valore passato in coda all’array.

class arrayDinamico
        public vector()
        private appArray()
        public lastIndex

        Private Sub Class_Initialize
             lastIndex = -1
        End Sub

        public sub push(pValue)
                if lastIndex>-1 then
                        redim appArray(lastIndex)
                       
                        for i=0 to lastIndex
                                appArray(i) = vector(i)
                        next
                end if 
                lastIndex = lastIndex + 1
                redim vector(lastIndex)
               
                for i=0 to lastIndex-1
                         vector(i) = appArray(i)
                next
               
                vector(lastIndex) = pValue
        end sub 

end class

Dobbiamo analizzare il metodo push appena inserito:

public sub push(pValue)
                if lastIndex>-1 then
                        redim appArray(lastIndex)
                        for i=0 to lastIndex
                                appArray(i) = vector(i)
                        next
                end if 
                lastIndex = lastIndex + 1
                redim vector(lastIndex)
               
                for i=0 to lastIndex-1
                         vector(i) = appArray(i)
                next
               
                vector(lastIndex) = pValue
        end sub

Tutto questo codice è dovuto al fatto che l’utilizzo di redim cancella il contenuto dell’array, quindi dobbiamo come prima cosa trasferire il contenuto dell’attuale array vector in appArray, ma effettuiamo tale operazione solo se non l’array vector contiene almeno un elemento (linee da 2 a 7).
Poi ridimensioniamo vector tramite redim, ricopiamo quello che c’era nell’arrai prima del redim, e infine aggiungiamo l’ultimo valore.

Ora possiamo aggiungere un metodo print(),all’interno della classe, la cui funzione è quella di stampare a video il contenuto dell’array dinamico.

public sub print()
        for i=0 to ubound(vector)
                response.Write(vector(i)&"<br>")
        next   
end sub

Ottenendo così la seguente classe:

class arrayDinamico
        public vector()
        private appArray()
        public lastIndex
       
        Private Sub Class_Initialize
        lastIndex = -1
        End Sub
       
        public sub push(pValue)
                if lastIndex>-1 then
                        redim appArray(lastIndex)
                       
                        for i=0 to lastIndex
                                appArray(i) = vector(i)
                        next
                end if 
                lastIndex = lastIndex + 1
                redim vector(lastIndex)
               
                for i=0 to lastIndex-1
                         vector(i) = appArray(i)
                next
               
                vector(lastIndex) = pValue
        end sub 
       
        public sub print()
                for i=0 to ubound(vector)
                        response.Write(vector(i)&"<br>")
                next   
        end sub
end class

Per instanziare il codice dobbiamo scrivere

set aDina = new arrayDinamico

A questo punto possiamo utilizzare il metodo push() per aggiungere elementi e il metodo print() per visualizzare l’array.

aDina.push("Ciao")
aDina.print
aDina.push("Sono un array dinamico")
aDina.print
aDina.push("Molto Diamico")
aDina.print

Il codice completo si può scaricare seguendo questo link

Twitter