30/06/21 15:13
Carlo
Perfetto,
Così facendo modifico solo da 1 a 7 e il valore da inserire(livello) è il risultato di un calcolo eseguito in altro posto .
perché il for parte da 1, non perché hai messo pos=1 nell'istruzione in riga 3:
Dim pos As Integer = 1
Questa correzione mi ha fatto capire che non hai compreso il duplice compito di pos.
pos è la posizione in cui si trova il primo carattere di: "<PaletteRemap" & p.ToString
ma pos è anche il punto di partenza di ricerca di IndexOf: XML.IndexOf("<PaletteRemap" & p.ToString,
pos)
Averlo messo a uno nella dichiarazione, significa che la prima ricerca che effettuerai per trovare: "<PaletteRemap" & p.ToString, partirà dalla posizione 1 nel file invece che da 0, di fatto non cambia nulla.
Mentre il ciclo For con p=1, fa quello che vuoi, iniziare da "<PaletteRemap1"
Il ciclo
For p = 1 To 7 funziona così:
pos = 0
p = 1
IndexOf scorrerà tutto il file XML a partire dalla posizione zero, e quando trova la prima occorrenza di: "<PaletteRemap1", si ferma e mette nella variabile pos la posizione del primo carattere di: "<PaletteRemap1" (4480)
al secondo ciclo pos=4480
p = 2
IndexOf scorrerà il file XML a partire dalla posizione 4480, e quando trova la prima occorrenza di: "<PaletteRemap2", si ferma e mette nella variabile pos la posizione del primo carattere di: "<PaletteRemap2" (4532)
e così via, praticamente il file XML viene scansionato sequenzialmente senza ripartire dall'inizio ogni volta.
Sono piccolezze, ma la consapevolezza di quello che si fa e perché è essenziale per scrivere un programma con la propria testa.
Ultima modifica effettuata da Carlo 15/07/21 18:00
in programmazione tutto è permesso