Assegnazione
e apertura
A ogni file che viene
aperto deve essere assegnato un numero (tra 1
e 155), il quale sarà strettamente legato al nome fisico che
servirà a indicare il file presente all'interno del disco. Il numero sarà
quello utilizzato all'interno del programma per far riferimento al file
stesso. Questa attività avviene con il comando di apertura Open che indica
anche le modalità di accesso al file.
File sequenziale
|
File diretto
|
Open "nome_file"
For Input As #Numerofile
|
Open "nome_file"
For Random As #Numerofile Len = Len(Tiporecord)
|
Al file nome_file
viene assegnato il numero Numerofile e reso disponibile per la lettura
sequenziale.
|
I dati possono essere
letti e scritti. I record sono elaborati in un qualsiasi ordine.
Deve essere definita la lunghezza del singolo record del file (Tiporecord).
|
|
|
Open "nome_file"
For Output As #Numerofile
|
In questo caso i
dati verranno scritti sul file a partire dall'inizio, cancellando
eventuali dati già presenti.
|
|
Open "nome_file"
For Append As #Numerofile
|
I dati verranno
scritti alla fine del file, dopo eventuali dati già presenti.
|
Lettura
A seconda del tipo di
file usato, cioè alla modalità di apertura, vi sono varie modalità di
lettura.
File sequenziale
|
File diretto
|
Input #Numerofile,
Vari, Var2
|
Get #Numerofile,
Numrec, NomeRecord
|
Nel caso di file
sequenziali, vengono letti sequenzialmente i valori presenti nei
campi del file e caricati nelle variabili indicate.
|
Usato nei file ad
accesso random, carica nella variabile NomeRecord il record che
si trova nel file alla posizione indicata da Numrec. Se Numrec non
viene specificato viene letto il record successivo all'ultimo dato
elaborato.
|
Input #3, Nome,
Cognome, Indirizzo
|
Get Numfile,
5, Persona
|
I primi tre campi
presenti nel file aperto con il numero 3 verranno caricati nelle
variabili Nome, Cognome e Indirizzo.
|
Caricherà nella
variabile Persona (che sarà dello stesso tipo strutturato dei record
presenti nel file) il quinto record.
|
Scrittura
Anche le istruzioni di
scrittura variano in base al tipo di file usato e alla modalità di apertura.
File sequenziale
|
File diretto
|
Write #Numerofile,
Vari, Var2
|
Put #Numerofile,
Numrec, NomeRecord
|
Usato nei file sequenziali
i valori presenti nelle variabili indicate vengono scritti sequenzialmente
nel file.
|
Viene usato nei
file ad accesso Random, e carica nel record che si trova nel file
alla posizione indicata da Numrec il contenuto della variabile NomeRecord.
Se Numrec non viene specificato viene scritto il record successivo.
|
Write #3, Nome,
Cognome, Indirizzo
|
Put Numfiie,
5, Persona
|
I contenuti delle
variabili Nome, Cognome e Indirizzo vengono caricati come campi
4ifferenti nel file aperto con il numero 3.
|
Il contenuto della
variabile Persona (che sarà dello stesso tipo strutturato dei record
presenti nel file> sarà caricato nella quinta posizione del file.
|
Chiusura
Close #Numerofiie
Chiude il file identificato
da Numerofile. |
Close
Chiude tutti i file
aperti. |
Funzioni
utili
File
sequenziale |
File
diretto |
seek (Numerofile) |
seek (Numerofile) |
Se il file è sequenziale (aperto in modalità Output,
Append o
Input) indica la posizione di byte nella quale l'operazione successiva verrà eseguita (il primo byte di un file si trova nella posizione 1, il secondo byte nella posizione 2 etc.) |
Se il file
è random restituisce la posizione (numero del record) del record
successivo letto o scritto nel file. |
numfile = FreeFile
Open "nome_file"
For input As Numfile
|
per agevolare
la gestione dei numeri da assegnare ai file da aprire, evitando errori,
esiste la funzione FreeFile che restituisce un numero di file
non ancora utilizzato. |
eof (Numfile) |
eof (Numfile) |
Si tratta di una funzione booleana che restituisce il valore vero se il file (aperto in precedenza in modalità Input) è finito (se siamo posizionati al fondo del file), altrimenti quello falso. È consigliabile utilizzare la funzione EOF per evitare errori dovuti al tentativo di leggere altri dati dopo aver raggiunto la fine del file.
Con i file aperti in modalità Output , EOF restituisce sempre True.
Il valore vero alla funzione viene attribuito dalla lettura dell'ultimo record del file stesso. |
Si tratta di una funzione booleana che restituisce il valore vero se il file (aperto in precedenza in modalità Random) è finito (se siamo posizionati al fondo del file), altrimenti quello falso. La funzione restituirà False anche se l'ultima istruzione Get eseguita non è stata in grado di leggere un intero record. È consigliabile utilizzare la funzione EOF per evitare errori dovuti al tentativo di leggere altri dati dopo aver raggiunto la fine del file. |
|
Lof (Numfile) |
Tale funzione restituisce il numero di byte presenti nel me indicato dal numero Numfile. |
Per
sapere quanti sono i record presenti in un file random, basta dividere
il valore restituito dalla funzione Lof per la dimensione di un record
restituito dalla funzione Len.
Numero_di_record =
Lof(Numfile)/Len(TipoRecord) |
|
Istruzione
With
Quando si
opera con i files diretti può essere conventiente utilizzare l'istruzione
With per eseguire una serie di istruzioni su un oggetto specificato senza
ripetere il nome dell'oggetto. Se, ad esempio, si desidera assegnare dei
valori immessi da tastiera a campi di un file diretto su può operare
come segue:
Private
Type auto
codmod
As Byte
codcon As Byte
dati As String * 50
End
Type
Dim recordauto As auto
|
<<<<
|
Viene
definito il tracciato record di un file diretto |
:
|
|
Private
Sub mnuCancella_Click() |
|
With
recordauto
.codmod = txtmodello.Text
.codcon = txtconcessionario.Text
.dati = txtaltro.Text
End
With
|
<<<<
|
Vengono
usati i campi del record che altrimenti andrebbero scritti come: |
recordauto.codmod
= txtmodello.Text
recordauto.codcon = txtconcessionario.Text
recordauto.dati = txtaltro.Text
|
Put
#1, I, recordauto
End
Sub
|
|
È
possibile nidificare le istruzioni With inserendo un blocco With all'interno
di un altro. I membri dei blocchi With esterni sono tuttavia nascosti
dai blocchi With interni ed è pertanto necessario inserire in un
blocco interno With un riferimento completo all'oggetto per qualsiasi
membro di un oggetto incluso in un blocco With esterno.
|
L'oggetto APP L’oggetto App viene fornito dalla libreria di Visual Basic e rappresenta l’applicazione in esecuzione; questo oggetto espone diverse proprietà e metodi.
La proprietà Path restituisce il percorso del file eseguibile (se il programma è eseguito come file EXE autonomo) o del progetto salvato (se eseguito all’interno dell’ambiente). L'oggetto App, abbinato alla proprietà path, se usato nell'istruzione Open dei file consente di aumentarne la portabilità infatti un file così gestito può essere spostato ovunque, insieme all'applicazione che lo gestisce, senza problemi. |