
Originariamente inviata da
optime
è sbagliato il ciclo di caricamento - controlla l'indice

grazie, corretto, in ogni caso, l'errore stranamente rimane quello..
codice:
n = Val(InputBox("Inserisci il numero delle città da caricare:", "Caricamento dati"))
ReDim nameCityList(n), temperatureCityList(n), populationCityList(n)
For Me.i = 0 To n - 1
nameCity = InputBox("Inserisci il nome della città:", "Caricamento dati")
nameCityList(i) = nameCity
temperatureCity = Val(InputBox("Inserisci la temperatura minima della città alle ore 23:00", "Caricamento dati"))
temperatureCityList(i) = temperatureCity
populationCity = Val(InputBox("Inserisci la popolazione della città:", "Caricamento dati"))
populationCityList(i) = populationCity
Next
Ho eseguito un ulteriore test e ho stampato a video con un ciclo for tutte le temperature presenti:
codice:
For Me.i = 0 To (temperatureCityList.Count - 1)
lstVisualizza.Items.Add(temperatureCityList(i))
Next
se io nella fase di caricamento inserisco solo 1 città, mi da 2 valori, se ne inserisco 2, me ne da 3.. è come se caricasse nel vettore un dato in più con valore 0, quindi, se ad esempio inserisco 2 valori:
Città: 1
Temperatura: 1
Popolazione: 1
-
Città: 2
Temperatura: 2
Popolazione: 2
Quello che mi aspetto di vedere è questo:
1
2
Mentre quello che effettivamente stampa è questo:
1
2
0
Perchè? Grazie anticipatamente
Ho risolto tutto sistemando questa semplice riga:
ReDim nameCityList(n - 1), temperatureCityList(n - 1), populationCityList(n - 1)
Anche se, sinceramente, non vedo il motivo di una cosa del genere..
Se n = 2 (2 dati da inserire), io di fatto, con il ReDim, non sto indicando QUANTI dati inserire? Non sto dando un indice massimo, solo la lunghezza del vettore. Quindi, che senso ha, se n = 2, ReDim variabile(1)?
Probabilmente funziona indicandolo come n-1 perchè, di fatto, viene inizializzato il valore fino a indice indicato quindi:
variabile(0)
variabile(1)
variabile(2)
se n = 2..
mentre se n = 1
variabile(0)
variabile(1)
che effettivamente è sbagliato.
mentre se n = 2 ma variabile(n-1)
variabile(0)
variabile(1)
ed è corretto.. ringrazio anticipatamente tutti.