se non so quanti elementi devo mettere nell'array, il quale viene caricato con un ciclo for, cosa ne dite se nel ciclo ad ogni passaggio ridimensione l'array aumentando di 1 la dimensione?
se non so quanti elementi devo mettere nell'array, il quale viene caricato con un ciclo for, cosa ne dite se nel ciclo ad ogni passaggio ridimensione l'array aumentando di 1 la dimensione?
henry
se proprio non sai quanto deve essere grande l'array...codice:x=10 for i=0 to X-1 redim preserve mioArray(i) mioArray(i)=i+1 'faccio un array con i numeri da 1 a 10 next for i=0 to ubound(mioArray) response.write mioArray(i) next
in realtà non chiedevo il codice ma solo un consiglio se era il metodo migliore o se appesantisce la procedura...
ma già che l'hai scritto ti chiedo:
- a cosa serve "preserve" ?
- non è + corretto "for i=0 to (Ubound(mioarray)-1)
grazie
ciao
henry
preserve preserva, ovvio. senza preserve non si preserva, altrettanto ovvio.![]()
in pratica preserve conserva i dati che hai nell'array quando lo ridimensioni. Ubound restituisce l'ultimo elemento dell'array quindi mi sembra una cosa inutile (anche se non capisco perchè funzionino tutti e due i codici)
cmq appesantisce molto meno del recordset...diciamo che gli array sono molto digeribili
questa la documentazione del redim:
Istruzione ReDim
Consente di dichiarare variabili di matrici dinamiche e di assegnare o riassegnare lo spazio di memorizzazione a livello di routine.
ReDim [Preserve] nomevar(indici) [, nomevar(indici)] . . .
Argomenti
Preserve
Conserva i dati di una matrice esistente quando viene modificata l'ultima dimensione.
nomevar
Nome della variabile. Segue le convenzioni di denominazione standard delle variabili.
indici
Dimensioni di una variabile matrice; è possibile dichiarare un massimo di 60 dimensioni multiple. La sintassi dell'argomento indici è la seguente:
limitesuperiore[,limitesuperiore] . . .
Il limite inferiore di una matrice è sempre zero.
Osservazioni
L'istruzione ReDim consente di impostare le dimensioni o ridimensionare una matrice dinamica già dichiarata formalmente utilizzando un'istruzione Private, Public o Dim con parentesi vuote (senza indici di dimensioni). È possibile modificare il numero di elementi e dimensioni di una matrice utilizzando più volte l'istruzione ReDim.
Se si specifica la parola chiave Preserve, è possibile ridimensionare solo l'ultima dimensione della matrice. Il numero di dimensioni invece non può essere modificato. Le matrici con una sola dimensione possono, ad esempio, essere ridimensionate in quanto l'unica dimensione disponibile è anche l'ultima. Nelle matrici con due o più dimensioni è invece possibile ridimensionare solo l'ultima dimensione, senza tuttavia alterare il contenuto della matrice.
Nell'esempio seguente viene illustrato come aumentare l'ultima dimensione di una matrice dinamica senza cancellare i dati esistenti.
ReDim X(10, 10, 10)
. . .
ReDim Preserve X(10, 10, 15)
Attenzione Se le dimensioni di una matrice vengono diminuite, i dati contenuti negli elementi eliminati andranno perduti.
Le variabili numeriche sono inizializzate su 0, mentre le variabili stringa sono inizializzate su una stringa di lunghezza zero (""). Per potere utilizzare le variabili che fanno riferimento a un oggetto, è prima necessario assegnare a tali variabili un oggetto esistente utilizzando l'istruzione Set. Fino al momento dell'assegnazione di un oggetto, il valore della variabile oggetto dichiarata è inizialmente impostato su Nothing.
a me pare che ubound non dia l'indice dell'ultimo elemento ma che invece conta il numero degli elementi, compreso quello con indice 0...
henry
Funzione UBound
Restituisce il limite superiore della dimensione specificata di una matrice.
UBound(nomematrice[, dimensione])
Argomenti
nomematrice
Obbligatorio. Nome della variabile matrice espresso in base alle convenzioni di denominazione standard per le variabili.
dimensione
Facoltativo. Numero intero che indica il limite superiore della dimensione restituito. Per la prima dimensione è necessario specificare 1, per la seconda 2 e così via. Se si omette l'argomento dimensione, viene automaticamente impostato 1.
Osservazioni
La funzione UBound viene utilizzata insieme alla funzione LBound per identificare le dimensioni di una matrice. La funzione LBound consente di trovare il limite inferiore di una dimensione di matrice.
Il limite inferiore predefinito di una dimensione è sempre uguale a 0. Di conseguenza, specificando le seguenti dimensioni, la funzione UBound restituisce i valori elencati nella tabella riportata di seguito.
Dim A(100,3,4)
Istruzione Valore restituito
UBound(A, 1) 100
UBound(A, 2) 3
UBound(A, 3) 4
sempre sulle dimensioni degli array, mi domando:
perchè non funziona (dice che vuol un n integer...)
n=10
dim mio_array(3,n)
ma invece funziona (senza dichiarazioni precedenti)
n=10
redim mio_array(3,n)
???
henry
è un buco. usa redim