Oppure

Loading
11/02/11 23:25
albertogil
ciao , potete aiutarmi? non ho capito svariate cose sugli array, per esempio
ho creato nel modulo un array di oggetti di tipo PompaBenzina
ma non crea + di una istanza . Quando creo la seconda pompa di benzina appare l'errore:
index out of range exception ! sono andato fouri dal range del vettore, ma non mi sembra visto che i=1 quando si verifica l'errore , impostando g= 2 o più.

'-----------modulo
public g as integer
public i =0
public vet(g) as PompaBenzina  ' classe PompaBenzina
'-------------------------------------------------------
' bottone crea 
 Private Sub crea_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles crea.Click
        If i < g Then
            MsgBox("i vale " & i)
            array(i) = New PompaBenzina
            array(i).tipo() = txttipo.Text
            array(i).prezzo() = txtprezzo.Text
        Else : MsgBox("non puoi creare altre pompe di benzina!!", MsgBoxStyle.Critical)
            Exit Sub
        End If
        txtprezzo.Text = ""
        txttipo.Text = ""
        i = i + 1
    End Sub
'---------------------------------------
' form load
Private Sub Pompa_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        g = InputBox("Quante pompe di benzina vuoi creare?")

    End Sub

Ultima modifica effettuata da albertogil 12/02/11 10:33
aaa
12/02/11 9:13
Il Totem
L'errore è molto semplice. Tu hai fatto una dichiarazione con inizializzazione del vettore. Infatti non hai semplicemente specificato che vet debba essere di tipo PompaBenzina() (ossia array di quel tipo di oggetti), ma gli hai anche dato una dimensione, vale a dire i. Le variabili in testa al modulo vengono allocate in memoria nella parte di dati globali, perciò sono le prime variabili ad essere allocate e/o inizializzate. In particolare, poiché al momento della sua inizializzazione i vale 0, stai creando var(0), ossia un array di 1 elemento.

Questo non è php o javascript, dove puoi assegnare un nuovo indice in qualsiasi momento. Se vuoi aumentare la dimensione dell'array devi creare un nuovo array di dimensioni maggiori o in alternativa usare una lista.
aaa