Differenze tra le versioni di "Assegnare direttamente i valori di dimensione conosciuta, letti da un file, ad una Struttura"
(12 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
− | Volendo assegnare i valori letti da un file direttamente ad una variabile di tipo ''Struttura'', è necessario prestare attenzione a due aspetti. | + | Volendo assegnare i valori letti da un file <SPAN Style="text-decoration:underline">direttamente</span> ad una variabile di tipo ''Struttura'' <SUP>[[[#Note|Nota 1]]]</sup> <SUP>[[[#Note|Nota 2]]]</sup>, è 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'' <SPAN Style="text-decoration:underline">non</span> può essere la seguente: | Innanzitutto, si dovrà tenere conto che l'istruzione di lettura dal file e di assegnazione alla variabile di tipo ''Struttura'' <SPAN Style="text-decoration:underline">non</span> può essere la seguente: | ||
− | Read #file_letto, variabile_struttura As | + | Read #file_letto, variabile_struttura As Identificatore |
giacché verrà sollevato un errore del tipo: " ''Unexpected As'' ". | 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: | L'istruzione per la lettura dal file e la conseguente assegnazione, invece, dovrà essere la seguente: | ||
− | '''variabile_struttura = Read #file_letto As | + | '''variabile_struttura = Read #file_letto As Identificatore''' |
− | + | Si noti come nella dichiarazione del tipo di dato, sia necessario impostare il nome prescelto dell'<I>Identificatore</i> (Etichetta) della Struttura. | |
− | + | <BR>Inoltre è opportuno che si sia certi che la dimensione (ossia il ''tipo'') di ciascun valore <SPAN Style="text-decoration:underline">corrisponda</span> - 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''. | 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''. | ||
Riga 25: | Riga 21: | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
− | Dim stru As | + | Dim stru As STRUTTURA |
Dim fl As File | Dim fl As File | ||
+ | |||
+ | fl = Open "<FONT Color=gray>''/percorso/del/file''</font>" For Read | ||
<FONT Color=gray>' ''Leggiamo dal file ed assegnamo i valori alla variabile di tipo "Struttura"'':</font> | <FONT Color=gray>' ''Leggiamo dal file ed assegnamo i valori alla variabile di tipo "Struttura"'':</font> | ||
Riga 41: | Riga 39: | ||
'''End''' | '''End''' | ||
+ | |||
+ | ===Assegnare a un membro array di una Struttura i dati letti da un file=== | ||
+ | Va ricordato che, per assegnre dati - letti da un file - a un membro array di una ''Struttura'', non è possibile utilizzare un membro di tipo array normale, come il seguente: | ||
+ | Public Struct STRUTTURA | ||
+ | ... | ||
+ | membro As Integer[16] | ||
+ | ... | ||
+ | End Struct | ||
+ | Bisogna invece usare gli array ''annidati'' : | ||
+ | Public Struct STRUTTURA | ||
+ | ... | ||
+ | membro[16] As Integer | ||
+ | ... | ||
+ | End Struct | ||
+ | |||
+ | |||
+ | |||
+ | ---- | ||
+ | =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#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 attuale delle 20:38, 23 set 2022
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 Identificatore
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 Identificatore
Si noti come nella dichiarazione del tipo di dato, sia necessario impostare il nome prescelto dell'Identificatore (Etichetta) della Struttura.
Inoltre è 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
Assegnare a un membro array di una Struttura i dati letti da un file
Va ricordato che, per assegnre dati - letti da un file - a un membro array di una Struttura, non è possibile utilizzare un membro di tipo array normale, come il seguente:
Public Struct STRUTTURA ... membro As Integer[16] ... End Struct
Bisogna invece usare gli array annidati :
Public Struct STRUTTURA ... membro[16] As Integer ... End Struct
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