EUCOOKIELAW_BANNER_TITLE

  • I think that

    Making the Web is like playing a game. Standard, Accessibility and Usability are only few rules.
    No game is awesome if you don't follow the rules.

    International Webmasters Association

  • Subscribe to my blog via email

    Insert here your e-mail address and you will receive a message when a new post will come.

La gestione dei Files

Modalità di accesso

Come abbiamo detto in precedenza un file si può aprire in diversi modi:
Possiamo gestirlo come insieme di record di lunghezza fissa (Random Access File – File ad Accesso Casuale) con la sintassi:

Open NomeFile For Random As NomeLogico Len = 123

Oppure come file ad accesso sequenziale:

Open NomeFile For Input As NomeLogico
' oppure
Open NomeFile For Output As NomeLogico

Oppure come file binario:

Open NomeFile For Binary As NomeLogico Len = 123

Lettura e scrittura di un file ad accesso casuale

In base alla modalità di apertura del file, esistono funzioni differenti di lettura e scrittura.

Per i files ad accesso casuale (Random Access File) è necessario determinare la lunghezza del dato da acquisire o scrivere poichè la loro caratteristica è quella di poter accedere ad un file velocemente spostandosi di una serie di byte per volta in dipendenza di quanto viene specificato sul comando Open per cui se avessi un file di 246 bytes in base alla sintassi specificata prima si sarebbe in presenza di un file con 2 elementi da ora in poi chiamati records.

Questi dati possono essere di qualsiasi tipo: Intero, Stringa, Byte, Boolean ed addirittura tipi definiti dall’utente.

Facciamo un esempio:

Type MioRecord
Nome As String * 10    ' Deve essere dichiarata la lunghezza
' della stringa
Cognome As String * 20
End Type
...
Dim Persona As MioRecord
Open NomeFile For Random As NomeLogico Len = Len(Persona)

In pratica abbiamo detto che il file NomeFile sarà costituito da una serie di records con lunghezza pari alla lunghezza di Persona.

L’operazione di lettura di un record da questo tipo di file è legata alla funzione get:

Get NomeLogico, 1, Persona

Questa funzione ritorna nella variabile Persona il primo record del file.
Il valore 1 (che indica il record da leggere nel file) può anche essere omesso e la lettura sarà partendo dal primo record presente e seguendo col successivo alla successiva chiamata del metodo sullo stesso file, sempre che il file non sia stato chiuso e riaperto.

L’operazione di scrittura su un file ad acceso casuale è definito dal metodo put che richiede 3 parametri: il NomeLogico del File, la posizione in cui scrivere e l’informazione da scrivere:

Put NomeLogico, 1, Persona

Questa funzione scriverà nel primo record del file il valore contenuto nella variabile Persona

Anche quì il valore 1 può essere omesso come per la lettura prevedendo che la scrittura sarà sequenziale partendo dal primo record del file.

ATTENZIONE: Se si omette il posizionamento del record nel file, e lo stesso già contiene degli elementi, questi verranno svorascritti.

Se al posto di avere dei record di tipo UDT(User Defined Type) si hanno in un file dati di tipo intero, data o qualunque altro tipo bisogna definire una variabile del tipo voluto ed aprire il file dando come lunghezza del record la lunghezza della variabile definita in bytes.
Per esempio:

Dim mioRecord As Integer
Open NomeFile For Random As NomeLogico Len = Len(mioRecord)

Bisogna ricordar che per un file ad accesso casuale (Random File Access Mode) è obbligatorio definire la lunghezza del record.