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)&"
")
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)&"
")
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