Differenze tra le versioni di "Assegnare direttamente i valori di dimensione conosciuta, letti da un file, ad una Struttura"

Da Gambas-it.org - Wikipedia.
Riga 38: Riga 38:
 
   
 
   
 
  '''End'''
 
  '''End'''
 +
 +
===Leggere da un file un array di tipi di dati nativi===
 
Va ricordato che, per leggere da un file un array di tipi di dati nativi, non è possibile utilizzare come membro di una ''Struttura'' un array di Gambas:
 
Va ricordato che, per leggere da un file un array di tipi di dati nativi, non è possibile utilizzare come membro di una ''Struttura'' un array di Gambas:
 
  membro As Integer[] <FONT Color=gray>''oppure con numero di elementi dichiarati''</font>
 
  membro As Integer[] <FONT Color=gray>''oppure con numero di elementi dichiarati''</font>
Riga 45: Riga 47:
  
  
 +
----
 
=Note=
 
=Note=
 
[1] Per l'assegnazione invece di valori, letti da un file, ad una Struttura mediante una variabile di tipo ''Puntatore'' vedere questa pagina della wiki: [[Assegnare_un_Puntatore_ad_una_Struttura_per_dereferenziarlo|Assegnare un Puntatore ad una Struttura per dereferenziarlo]].
 
[1] Per l'assegnazione invece di valori, letti da un file, ad una Struttura mediante una variabile di tipo ''Puntatore'' vedere questa pagina della wiki: [[Assegnare_un_Puntatore_ad_una_Struttura_per_dereferenziarlo|Assegnare un Puntatore ad una Struttura per dereferenziarlo]].
  
 
[2] Vedere anche questa analoga pagina della wiki: [[Leggere_un_file_con_READ#Leggere_un_file_con_READ_e_salvarne_i_dati_in_una_Struttura|Leggere un file con READ e salvarne i dati in una Struttura]]
 
[2] Vedere anche questa analoga pagina della wiki: [[Leggere_un_file_con_READ#Leggere_un_file_con_READ_e_salvarne_i_dati_in_una_Struttura|Leggere un file con READ e salvarne i dati in una Struttura]]

Versione delle 02:34, 18 giu 2021

Volendo assegnare i valori letti da un file direttamente ad una variabile di tipo Struttura [Nota 1] [Nota 2], è necessario prestare attenzione a due aspetti.

Innanzitutto, si dovrà tenere conto che l'istruzione di lettura dal file e di assegnazione alla variabile di tipo Struttura non può essere la seguente:

Read #file_letto, variabile_struttura As STRUTTURA

giacché verrà sollevato un errore del tipo: " Unexpected As ".

L'istruzione per la lettura dal file e la conseguente assegnazione, invece, dovrà essere la seguente:

variabile_struttura = Read #file_letto As STRUTTURA

In secondo luogo è opportuno che si sia certi che la dimensione (ossia il tipo) di ciascun valore corrisponda - ovviamente - con il tipo di variabile del membro della Struttura, al quale detto valore deve essere assegnato.

Mostriamo un semplice esempio pratico, nel quale poniamo il caso di leggere un file contenente i seguenti valori esadecimali: 09 E7 03 9F 86 01 00, corrispondenti ad un Byte, ad un Intero-Corto e ad un Intero. Ne riproduciamo, quindi, nel codice 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 STRUTTURA
 Dim fl As File
 
  fl = Open "/percorso/del/file" For Read

' Leggiamo dal file ed assegnamo i valori alla variabile di tipo "Struttura":
  stru = Read #fl As STRUTTURA

' Mostriamo in console, per verifica, i valori assegnati ai membri della "Struttura":
  With stru
    Print .b
    Print .s
    Print .i
  End With

  fl.Close

End

Leggere da un file un array di tipi di dati nativi

Va ricordato che, per leggere da un file un array di tipi di dati nativi, non è possibile utilizzare come membro di una Struttura un array di Gambas:

membro As Integer[] oppure con numero di elementi dichiarati

Bisogna invece usare gli array annidati:

membro[16] As Integer 



Note

[1] Per l'assegnazione invece di valori, letti da un file, ad una Struttura mediante una variabile di tipo Puntatore vedere questa pagina della wiki: Assegnare un Puntatore ad una Struttura per dereferenziarlo.

[2] Vedere anche questa analoga pagina della wiki: Leggere un file con READ e salvarne i dati in una Struttura