Differenze tra le versioni di "Assegnare i valori di un file ad una Struttura mediante un Puntatore"

Da Gambas-it.org - Wikipedia.
(Creata pagina con 'E' possibile assegnare direttamente uno o più valori contenuti da un file nei membri di una ''Struttura'' attraverso la proprietà ''.Data'' delle variabili vettoriali. Mos...')
 
Riga 22: Riga 22:
 
  <FONT Color=gray>' ''Leggiamo il file e carichiamo i suoi dati nella variabile vettoriale di tipo "Byte[]":''</font>
 
  <FONT Color=gray>' ''Leggiamo il file e carichiamo i suoi dati nella variabile vettoriale di tipo "Byte[]":''</font>
 
     .Read(fl, 0, .Count)
 
     .Read(fl, 0, .Count)
  <FONT Color=gray>' ''In questo caso dobbiamo tenere conto del necessario "allineamento" naturale del dato relativo al membro di tipo "Short" della Struttura,''
+
  <FONT Color=gray>' ''In questo esempio siamo costretti a tenere conto del necessario "allineamento" naturale del dato relativo al membro di tipo "Short" della Struttura,''
 
  ' ''aggiungendo un byte vuoto dopo il primo valore, ossia dopo quello corrispondente al membro di tipo Byte:''</font>
 
  ' ''aggiungendo un byte vuoto dopo il primo valore, ossia dopo quello corrispondente al membro di tipo Byte:''</font>
 
     .Add(0, 1)
 
     .Add(0, 1)

Versione delle 11:42, 17 feb 2015

E' possibile assegnare direttamente uno o più valori contenuti da un file nei membri di una Struttura attraverso la proprietà .Data delle variabili vettoriali.


Mostriamo un semplice esempio, nel quale si suppone si abbia un file contenente i seguenti valori esadecimali: 09 E7 03 9F 86 01 00, corrispondenti ad un Byte, ad uno Short e ad un Intero.
Ne riproduciamo, quindi, la Struttura che dovrà poi contenere tali dati.

Public Struct STRUTTURA
 b As Byte
 s As Short
 i As Integer
End Struct


Public Sub Main()

 Dim stru As New STRUTTURA
 Dim fl As File
 Dim bb As Byte[]

  fl = Open "/percorso/del/file/da/leggere"

  With bb = New Byte[Lof(fl)]
' Leggiamo il file e carichiamo i suoi dati nella variabile vettoriale di tipo "Byte[]":
    .Read(fl, 0, .Count)
' In questo esempio siamo costretti a tenere conto del necessario "allineamento" naturale del dato relativo al membro di tipo "Short" della Struttura,
' aggiungendo un byte vuoto dopo il primo valore, ossia dopo quello corrispondente al membro di tipo Byte:
    .Add(0, 1)
' L'assegnazione diretta dei dati dalla variabile vettoriale alla variabile di tipo "Struttura", da noi creata, avviene semplicemente l'assegnazione dell'indirizzo di memoria
' (Puntatore) dei dati contenuti dalla variabile vettoriale di tipo "Byte[]" ritornato dalla proprietà ".Data" di tale vettore:
    ru = .data
  End With
   
  With ru
    Print .b
    Print .s
    Print .i
  End With
 
  fl.Close

End