Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Come si fa a incrementare di uno il NOME della variabile?

Aspette, ora mi spiego meglio:
io ho un ciclo
for i = 1 to 10
 
next i
e voglio che a ogni ciclo mi sacriva il contenuto di alcune variabili,
chiamate MiaVariabile1, MiaVariabile2, MiaVariabile3, ecc.
Ovviamente queste variabili hanno dei contenuti diversi.
come posso fare per sommare due stringhe in modo da cambiare il nome
della variabile?
 
Dovrebbe, cioè, venire fuori una cosa del genere:
for i = 1 to 10
	msgbox miavariabile & i  'Così somma i contenuti delle 		
'variabili. Io,  invece, voglio ' sommare i nomi
' delle variabili in modo da  ottenere, al  primo ciclo,
'MiaVariabile1,  poi, ' MiaVariabile2 e
' così via.......  
next i
Come devo fare?
Grazie a chiunque mi aiuterà.
ByeZ!
Alkondor
Togliere NOSPAM per rispondere in e-mail

Tu vuoi rendere variabile il nome di una variabile, non si può fare!
Devi usare una collection che contiene tante variabili.
Ad esempio
dim Coll as new Collection
for i=1 to 10
    Coll(i)="Ciao"
next
A questo punto Coll sarà composta da 10 items stringa contenenti tutti
"Ciao".


Mi sembra un po' come sparare ad una mosca con un cannone!
Invece di usare una collection, basta un banale vettore!
Saluti, Massimo.

"Ciao".
No, forse non mi sono spiegato bene........
Io ho tante variabili di questo tipo.
Var1
Var2
Var3
Var4
Ora voglio scriverer il contenuto di ciascuna variabile.
Deve fare per dforza così?
Msgbox var1
msgbox var2
msgbox var3
msgbox var4
??????
Non si può utilizzare un ciclo?
for X = 1 to 4
    msgbox varX
next
Non è proprio possibile?
Azz!
Aiutatemi! Altrimenti devo ripetere decine di volte lo stesso codice
per questo problema!!!
Grazie.



Non si puo' fare a meno di convertire le tue variabili in un vettore 
e di usare gli indici cosi:
dim var(MAX_NUMERO_DI_VARIABILI)   ' per dichiarare il vettore
for X = 1 to 4                     ' per visualizzarle
    msgbox var(X)
next
i nomi delle variabili ( sarebbe meglio dire le variabili ) non si
possono costruire a run-time ma devono essere creati per forza durante
la fase di compilazione.

Non č proprio possibile?
Ti sei spiegato bene, il fatto e' che non e' proprio possibile cosi' come vuoi
fare tu; devi rivedere la tua struttura dati: se vuoi memorizzare 4 valori e poi
usarli in un ciclo come quello sopra non devi dichiarare 4 variabili distinte
ma, come ti hanno gia' suggerito, un vettore(array) di 4 elementi.
Quindi i tuoi Var1,Var2,... diventano semplicemente:
Dim Vars(1 to 4) As <il tipo di dati corretto>
Se le variabili contengono dati non omogenei puoi dichiarare il tutto 'As
Variant' e quindi fare cose tipo:
Vars(1) = 10
Vars(2) = "UnaStringa"
Set Vars(3) = UnOggetto
e cosi' via; a questo punto il tuo ciclo diventa:
for X = 1 to 4
    msgbox Vars(X)
next
per fare i pignoli, nell'esempio sopra il 3 elemento e' un oggetto quindi MsgBox
Vars(3) ti darebbe errore ma non credo sia il tuo caso.
Ciao
--
Luca Dormio
l...@sig-la.com
ldo...@tin.it

MI spiace ma visual basic non conosce i meta linguaggi che permettono di
fare quello che vuoi tu.  Devi per forza usare un vettore!!!
Il vecchio clipper in dos era iun grado di farlo!
--
Lunga Vita e Prosperità


Penso che l'unica soluzione e' utilizzare un array.........
dim Var(1 to 20)
var(1) = 21
Var(2) = 15
ecc. ecc.
for i = 1 to 20
     msgbox cstr(var(i))
next i
altre soluzioni non ne vedo..........
Ciao
Ven.

la fase di compilazione.
Ok, ho capito.


non conosco abbastanza vb, ma se non si riesce ad accedere al contenuto di
una variabile (come mi sembra si riuscisse in clipper) per farne il nome di
un'altra variabile, l'unica e' una matrice.
Private Sub Form_DblClick()
    Dim j As Byte, str As String
    For j = 0 To 9
        str = "a" & j
        Me.Print str
    Next
End Sub
str restituisce giustamente a0, a1 ... a9.
poi pero' dovresti dichiarare dim (str) oppure dim &str, e direi che a vb la
cosa non piaccia molto.
Alkondor <alko...@freemail.itNOSPAM> wrote


...


Alfredo.
