non riesco a seguirti....
Riprendo l'esempio riportato da
TopFuel:
DIM array(5 TO 20) AS STRINGVoglio dire che, anche in un caso come questo, è evidente che, di qualunque quantità siano stati incrementati gli elementi di un array non-definito, il programmatore già sa
a priori (e l'ha impostato appunto nel codice) che deve andare a leggere i valori contenuti dal 5° al 20° elemento. L'array, in sostanza, dovrà essere comunque di almeno 21 elementi.
Ma questo si può fare, come ho ampiamente dimostrato prima, agevolmente anche con Gambas.
Le azioni fondamentali che si possono svolgere sugli elementi di un array sono, come è noto e palese, riempimento con dei valori, del tipo per i quali tali elementi sono stati definiti, e lettura dei valori presenti.
Riguardo alla fase di assegnazione dei valori ad uno o più elementi dell'array mi sembra che, assegnare valori - ad esempio - dal 5° al 20° elemento, lasci pensare che:
* sono stati
già comunque definiti almeno 21 elementi dell'array;
* gli elementi dall'indice 0 all'indice 3, non essendo interessati da alcuna assegnazione, continueranno a possedere valore zero.
E' dunque evidente che l'aver deciso di lasciare vacanti quei quattro primi elementi è stato determinato - qualunque essa sia - da una motivazione.
In Gambas potrei fare avere due casi, e risolvere agevolmente la cosa a seconda del verificarsi di questi:
* array di dimensione definita:
Public Sub Form_Open()
Dim ss As New String[21]
Dim j As Byte
For j = 5 To 20
ss[j] = "alibaba"
Next
' oppure:
For j = 5 To 20
ss.Add("alibaba", j)
Next
End
* per un array di dimensione indefinita, quell'esempio di
TopFuel non è più conferente, giacché mi pare vada da sé che una definizione da un elemento ad un altro dell'array presuppone una definizione
a priori degli elementi almeno minimi dell'array medesimo (come ho anche detto all'inizio).... altrimenti come potremmo parlare di 20° elemento ?
Insomma, mi sembra che VB faccia un lavoro preventivo, che invece in gambas devi svolgere espressamente tu con il codice.