txt1.text=""
For i=1 To 8
txt1.text=txt1.text & clas(i).Nome & " - " & clas(i).Punti & CRLF
Next
clas(z1).Punti=ClasVec(z1).Punti+2 ' assegno sempre due punti per comodità
For i=1 To 8
Clas(i).nome=ClasVec(i).Nome
Clas(i).Punti=ClasVec(i).Punti
Clas(i).SetVinti=ClasVec(i).SetVinti
Next
For i = 1 To 4
Cercaindici (i)
If Gara(i).set1 > Gara(i).set2 Then ' vittoria in casa
Clas(z1).Punti = Clas(z1).Punti + 2 ' assegno sempre due punti per comodità
Clas(z1).SetVinti = Clas(z1).SetVinti + Gara(i).set1
Clas(z2).SetVinti = Clas(z2).SetVinti + Gara(i).set2
End If
If Gara(i).set1 < Gara(i).set2 Then ' vittoria in trasferta
Clas(z2).Punti = Clas(z2).Punti + 2 ' assegno sempre due punti per comodità
Clas(z1).SetVinti = Clas(z1).SetVinti + Gara(i).set1
Clas(z2).SetVinti = Clas(z2).SetVinti + Gara(i).set2
End If
Next
For i=1 To 8
ClasVec(i).nome=Clas(i).Nome
ClasVec(i).Punti=Clas(i).Punti
ClasVec(i).SetVinti=Clas(i).SetVinti
Next
E non c'è modo di "forzare" il passaggio per valore e non per riferimento?Hai ragione.
Evidentemente, i tipi, e quindi gli array di tipi, si comportano come le variabili oggetto
(non uso i tipi, molto meglio le classi, dammi retta).
Cmq, con le classi sarebbe lo stesso.
Se tu fai VarOggettoA = VarOggettoB, non è il contenuto della variabile
che finisce in VarOggettoA, ma il riferimento a una zona di memoria
che diventa comune sia a VarOggettoA che a VarOggettoB,
con la conseguenza che se cambi
VarOggettoA.Punti +2
anche VarOggettoB.Punti avrà +2
e viceversa
E non c'è modo di "forzare" il passaggio per valore e non per riferimento?
Comunque se vuoi proprio capire perché secondo me B4A fa schifo metti il commento nelle prime 3 righe (quelle "elemento per elemento") e prova a togliere il commento al secondo gruppo (quello "ogni singolo campo"). Così non si aggiornerà nemmeno più la classifica, nemmeno la prima volta. Dimmi se è possibile lavorare con un compilatore così...
Non funziona neanche l'esempio che mi hai mandato tu. L'unica cosa è leggere dal file binario la classifica vecchia ogni volta che devo aggiornarla.
Ma non mi sono ancora spiegata? Forse sono talmente presa da sta cosa che non riesco a farmi capire. I risultati scritti contemporaneamente li ho messi nel programma d'esempio per far vedere che c'è quest'anomalia. In realtà i risultati arrivano in momenti diversi e non si riesce a gestire solo l'ultimo arrivato per com'è fatto tutto il resto del programma. Quindi ogni volta che arriva un risultato nuovo occorre richiamare la classifica che c'era prima dell'inizio delle gare in programma in questo turno per aggiornarla. Ecco perché ho bisogno di una classifica "vecchia" e di quella attuale. Alla fine della giornata con i risultati di tutte le gare viene salvata la nuova classifica che la prossima volta sarà la ClasVec.