PROGRAMMIAMO
VB - I File: Lettura

Line Input

Il modo più facile per leggere il contenuto di un file di testo (aperto in lettura, For Input) è usare l'istruzione Line Input, la quale, come dice il nome, legge una singola riga del file di testo. L'istruzione Line Input è in sostanza il contrario dell'istruzione Print: quest'ultima scrive, mentre la prima legge dal file. Per esempio

Dim stringa As String
Open "dati.txt" For Input as #1
Line Input #1, stringa

legge il contenuto della prima riga del file e lo salva nella variabile di nome "stringa".

La lettura di un file di testo è un'operazione sequenziale, nel senso che viene fatta in sequenza, riga per riga: eseguendo, dopo la precedente, un'altra Line Input, questa andrà a leggere la riga successiva nel file e così via. In sostanza nella lettura si procede sempre solo in avanti, senza saltare nessuna riga e senza mai tornare indietro (assomiglia un po' a quei calendari nei quali ogni giorno si strappa un foglio).

Per esempio, volendo leggere il file Anagrafe.txt (che abbiamo creato nella lezione precedente) caricando i valori letti in altrettante variabili, occorrerà fare così:

Open "Anagrafe.txt" For Input As #13
Dim nome As String, cognome As String, eta As String, peso As String
Line Input #13, nome
Line Input #13, cognome
Line Input #13, eta
Line Input #13, peso
Close #13

Si osservi come tutte le variabili sono state dichiarate di tipo String. Infatti, come già osservato, tutti i dati salvati su un file di testo sono sempre stringhe di caratteri, anche quando si tratta di valori numerici.

 

Trovare la fine del file: EOF

Se il file contiene molte righe e molti valori, per leggerlo occorre un ciclo e bisogna anche sapere quando il ciclo di lettura dev'essere interrotto, cioè quando sono stati letti tutti i dati contenuti nel file. L'istruzione EOF consente di sapere quando il file è terminato e non ci sono più valori da leggere. Ecco come si usa:

Open "nomi.txt" For Input As #1
Dim nome As String
Do Until EOF(1)
   Line Input #1, nome
   list1.additem nome
Loop

Il file "nomi.txt" (contenente, per esempio, un elenco di nomi) viene aperto in lettura e letto riga per riga fino alla fine e i nomi letti vengono visualizzati in una list box. Si noti la sintassi di EOF: fra parentesi bisogna indicare l'handle associato al file; EOF vale True quando viene trovata la fine del file (End Of File).

Se il file contiene dei valori numerici, bisogna ricordarsi che questi sono in ogni caso rappresentati come stringhe e dunque vanno eventualmente convertiti in numeri con l'operatore Val. Per esempio il ciclo seguente legge una serie di valori dal file "numeri.txt" e ne calcola la media:

Dim valore As String, somma As Double, n As Integer
Open "numeri.txt" For Input As #1
Do Until EOF(1)
   Line Input #1, valore
   somma = somma + Val(valore)
   n = n + 1
Loop
txtMedia.text = Cstr(somma/n)

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it