Vediamo un pò
. Cominciamo dalla cosa più facile:
una diversità che invece può essere sostanziale è la dichiarazione dei puntatori: io infatti li avevo dichiarati integer mentre vedo che sono dichiarati come byte...
vuott ha dichiarato la variabile
num come
byte, probabilmente per risparmiare lo spazio da occupare in memoria o per sua abitudine. Il tipo variabile
byte infatti occupa in memoria solamente 8 bit, ciioè un byte, mentre il tipo variabile
integer occupa in memoria 16 bit, cioè 2 byte, ma non è obbligatorio utilizzare il tipo
byte. Io, per mia abitudine, preferisco dichiarare gli indici degli array sempre come
integer ed includo, come prilma lettera del nome variabile la "i", perchè così mi viene più facile e comodo riconoscerli.
Passiamo ora al codice:
clienti1$ = NEW String[num]
clienti2$ = NEW String[num, 6]
clienti2_tmp$ = NEW String[6]
FOR i = 0 TO num_rec - 1
clienti1$[y] = clienti1_tmp$
FOR j = 0 TO 5
clienti2$[y, j] = clienti2_tmp$[j]
NEXT
y = y + 1
NEXT
La riga 08 (
clienti1$[y] = clienti1_tmp$ ) valorizza l'elemento y dell'array clienti1$ che è dimensionato ad 1 solo elemento, perchè
num, nel codice che hai postato, non viene mai incrementato o riempito. Quindi, secondo quello che si legge, dopo il primo ciclo di loop, l'array è già finito e non può essere ulteriormente valorizzato. Probabilmente dovresti sostituire
num con
num_rec, ma anche quest'ultimo non riceve mai un valore.
PUBLIC SUB assegnazioni()
LETTURA_FILE_CLIENTI(tot_cli)
END
Secondo me, la SUB
LETTURA_FILE_CLIENTI non dovrebbe essere una SUB, ma una Function in modo da farti ritornare anche il totale dei record contenuti nel file clienti:
PUBLIC FUNCTION LETTURA_FILE_CLIENTI(TotRec as integer)
Dim iToReCli as integer
' ?????, a proposito il File Clienti che file è? Un file di testo, o cos'altro?
......bla......bla......bla......
Return(iToReCli)
END
Vorrei dirti di più, ma ancora il tuo codice contiene applicati pochi concetti. Quindi partiamo da questo poco e piano piano costruiremo l'intero edificio.
Potresti, secondo me, prima di dedicarti alla gestione del file clienti, concentrarti sul codice scritto fino ad ora e fare funzionare quello. Allora potresti simulare che il file contenga, per esempio, 10 record e valorizzare quindi:
DIM num_rec AS Integer = 10 '##### Numero totale dei record
DIM num AS Integer = 10
Aggiusta il programma tenendo conto di quello che ci siamo detti per ora. Dopo averlo fatto funzionare così, passiamo, se vuoi, al trattamento del file clienti.