Leggere un file binario con READ

Da Gambas-it.org - Wikipedia.

Se si intende leggere tutti i byte presenti all'interno del file, cioè l'intero file:

Public Sub Button1_Click()

Dim intfile As File
Dim b As Byte

' legge il file e lo carica nella variabile As File: "intfile"
 intfile = Open "percorso_del_mio_file.xxx" For Read

' avvia un ciclo per leggere tutti i byte...fino alla fine del file	
 While Not Eof(intfile)

 ' Ad ogni passaggio legge un byte e lo inserisce in “b“
 ' (il puntatore interno di Read avanza la lettura di un byte ad ogni passaggio) e...
   Read #intfile, b  {1}

 ' ...ne mostra i byte in formato esadecimale.
 ' mostra le due cifre per ogni valore esadecimale:
     Print Hex(b, 2)

 Wend

' chiude il file:
  Close #intfile

End


Se si vuole leggere tutto il file, ma un byte dopo l'altro solo ogni volta che si preme un tasto:

intfile As File

Public Sub Form_Open()

' legge il file e lo carica nella variabile As File: "intfile"
 intfile = Open "percorso_del_mio_file.xxx" For Read

End


Public Sub Button1_Click()

Dim b As Byte
 
 ' Ad ogni clic sul tasto legge un byte, e lo inserisce nella variabile “b“
 ' (il puntatore interno di Read avanza la lettura di un byte ad ogni passaggio) e...
   Read #intfile, b

'...ne mostra il byte (questa volta in valore decimale):
     Print b

End


Public Sub Button2_Click()

' Chiude il file
   Close #intfile

End


[modifica] Leggere uno specifico byte all'interno del file

Se invece si intende leggere un solo specifico byte all'interno del file:

Public Sub Button1_Click()

Dim intfile As File
Dim bb As Byte

' legge il file e lo carica nella variabile As File: "intfile"
  intfile = Open "percorso_del_mio_file.xxx" For Read

' si scelge di leggere il valore del byte n. 3, ossia del "quarto" byte (infatti il conteggio inizia da zero: 0, 1, 2, 3, etc, etc):
  Seek #intfile, 3

' legge il valore del byte puntato da Seek:
  Read #intfile, bb

' lo mostra in console in decimale:
  Print bb

' chiude il file:
  Close #intfile

END




[modifica] Note

[1] Da notare che:

  • in una istruzione READ #varFile, variabile, noi leggiamo il valore contenuto in "#varFile" e lo scriviamo in "variabile (scriviamo, cioè, in "variabile" il valore presente in "varFile";
  • in una istruzione WRITE #varFile, variabile, noi leggiamo il valore contenuto in "variabile" e lo scriviamo in "#varFile" (scriviamo, cioè, in "varFile" il valore presente in "variabile").
Strumenti personali