Va be'... ho coinvolto anche la ML di Minisini su 'sto problema. Lui me l'ha risolto, conservando l'array (che era la cosa che volevo appunto conservare), suggerendomi di usare il
Metodo Write di Byte[], e non Write come
istruzione:
«
To write the contents of an array, use its Write method, not the Write instruction.
The Write instruction *serializes* the data by writing both datype
information and data, so that the Read instruction can read it back later. »
Quest'ultima informazione viene confermata anche da un altro utente della Mailing List internazionale di Gambas, il quale mi dice:
«
If you
Write #File, aArr As Array
then Gambas has to be able to
aArr = Read #File As Array
the data back. To do so, the type of array and its size must be available and thus are written before the actual data. »
Ed allora il codice finale, giusto è:
Public Sub Button1_Click()
Dim aFl As File
Dim buff As New Byte[4]
aFl = Open "/tmp/mio_file" For Write
buff.Write(aFl)
aFl.Close
End
...ed ora come risultato nel file ottengo, coerentemente con quanto volevo, i primi quattro byte = 0 .
Altro esempio pratico dimostrativo:
Public Sub Button1_Click()
Dim aFl As File
Dim buff As New Byte[4]
Dim b as byte
aFl = Open "/tmp/mio_file" For Write
' carichiamo nell'array 4 valori da 0 a 3:
For b = 0 To 3
buff[b] = b
Next
' li andiamo a scrivere nel nostro file
' partendo sempre dal suo 1° byte:
buff.Write(aFl)
aFl.Close
End
...avremo coerentemente questo risultato: 00 01 02 03
P.S. Minisini ha precisato che i tre
strani dati, che prima ottenevo nel file
41 02 04 00 00 00 00 ......
stanno a rappresentare:
41 è l'Array (il carattere 'A' sta appunto per Array).
02 significa
Byte.
04 è (come ipotizzavo) il numero della dimensione dell'Array.
...quindi poi seguono i byte del contenuto dell'array.