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

Da Gambas-it.org - Wikipedia.
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 2: Riga 2:
  
  
Mostriamo un semplice esempio, nel quale si suppone si abbia un file di dimensioni e valori conosciuti. I dati-byte dei valori conosciuti del file in rappresentazione esadecimale sono: 09 E7 03 9F 86 01 00, corrispondenti ad un ''Byte'', ad uno ''Intero-Corto'' e ad un ''Intero''.
+
Mostriamo un semplice esempio, nel quale si suppone si abbia un file di dimensioni e valori conosciuti. I dati-byte dei valori conosciuti del file, corrispondenti ad un ''Byte'', ad uno ''Intero-Corto'' e ad un ''Intero'', sono in rappresentazione esadecimale i seguenti: 09 E7 03 9F 86 01 00.
<BR>Ne riproduciamo, quindi, nel codice la ''Struttura'' che dovrà poi contenere tali dati.
+
<BR>Riproduciamo, quindi, nel codice la ''Struttura'' che dovrà poi contenere tali dati.
 
  Public Struct STRUTTURA
 
  Public Struct STRUTTURA
 
   b As Byte
 
   b As Byte
Riga 11: Riga 11:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim stru As New STRUTTURA
 
   Dim stru As New STRUTTURA
Riga 17: Riga 17:
 
   Dim bb As Byte[]
 
   Dim bb As Byte[]
 
   
 
   
   fl = Open "<FONT Color=gray>''/percorso/del/file/da/leggere''</font>"
+
   fl = Open "<FONT Color=darkgreen>''/percorso/del/file/da/leggere''</font>"
 
   
 
   
 
   With bb = New Byte[Lof(fl)]
 
   With bb = New Byte[Lof(fl)]
Riga 36: Riga 36:
 
   fl.Close
 
   fl.Close
 
   
 
   
  '''End'''
+
  End

Versione attuale delle 18:24, 7 giu 2024

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


Mostriamo un semplice esempio, nel quale si suppone si abbia un file di dimensioni e valori conosciuti. I dati-byte dei valori conosciuti del file, corrispondenti ad un Byte, ad uno Intero-Corto e ad un Intero, sono in rappresentazione esadecimale i seguenti: 09 E7 03 9F 86 01 00.
Riproduciamo, quindi, nel codice la Struttura che dovrà poi contenere tali dati.

Public Struct STRUTTURA
 b As Byte
 c 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:
   stru = .Data
 End With
   
 With stru
   Print .b
   Print .c
   Print .i
 End With
 
 fl.Close

End