Written by xinyiman Ottobre 23, 2011, 10:28:00 pm22107 ViewsRating: 0 (0 Rates)Print
Fino ad ora abbiamo visto solo programmi che
permettevano il mantenimento di dati in memoria solo fino al termine
dell'esecuzione dello stesso. Mantenere i dati memorizzato oltre
l'esecuzione del programma è possibile tramite l'uso dei file. Per
capire come funzionano analizziamo il seguente esempio.
procedure
LavoriamoConIFile();
var
F: system.Text;
Riga: string;
begin
AssignFile (F,'Test.txt');
rewrite (f);
writeln (f,'Uso dei file1!');
CloseFile (f);
AssignFile (F,'Test.txt');
append (f);
writeln (f,'Uso dei file2!');
CloseFile (f);
AssignFile (F,'Test.txt');
reset
(f);
while
not eof(F) do
begin
readln(f,Riga);
writeln(Riga);
end;
CloseFile (f);
writeln('FINITO!');
end;
Abbiamo dichiarato due variabili, la variabile F che
contiene lo stream al file e la variabile Riga che conterrà i dati
letti dal file. In questo modo:
var
F: system.Text;
Riga: string;
Dopodiché abbiamo detto al programma che vogliamo
aprire un canale di comunicazione con un file che in questo caso si
chiama Test.txt e che il canale in questione si chiama F, e lo
abbiamo fatto in questo modo:
AssignFile (F,'Test.txt');
Però al momento non abbiamo ancora aperto fisicamente
un canale di comunicazione con il file, cosa che facciamo in questa
maniera:
rewrite (f);
Il rewrite non è il solo modo di aprire il canale verso
il file. Ci sono tre modi di farlo e sono:
rewrite: che apre il file in scrittura, se non c'è lo
crea e se esiste con del contenuto ne cancella il contenuto.
reset: che apre il file in sola lettura, e se il file
non esiste restituisce un errore
append: apre il file in scrittura ma senza cancellarne
il contenuto, aggiungendo al fondo del contenuto già esistente.
In seguito abbiamo scritto all'interno del file la
stringa 'Uso dei file1!', in questo modo:
writeln (f,'Uso dei file1!');
al passo successivo abbiamo chiuso in canale il sola
scrittura sul file in questo modo:
CloseFile (f);
Bene così facendo abbiamo creato un file di nome
Test.txt se ancora non esisteva, se invece già esisteva allora lo
abbiamo svuotato. Dopodiché abbiamo inserito la stringa 'Uso dei
file1 !'. Ma il programma non è ancora terminato, e vediamo come
prosegue:
AssignFile (F,'Test.txt');
append (f);
writeln (f,'Uso dei file2!');
CloseFile (f);
Grazie a quello appena imparato possiamo analizzare il
blocco per intero, che apre il canale al file senza svuotarlo (grazie
al comando append) e inserisce in coda la stringa 'Uso dei file2!',
in seguito chiude il canale al file.
Ma il programma ancora non è terminato, analizziamo il
pezzo successivo:
AssignFile (F,'Test.txt');
reset
(f);
while
not eof(F) do
begin
readln(f,Riga);
writeln(Riga);
end;
CloseFile (f);
writeln('FINITO!');
In questo ultimo blocco che andiamo ad analizzare
possiamo subito notare che grazie al comando reset apriamo il canale
al file in sola lettura. Dopodiché entriamo in un ciclo da cui si
esce solo quando si è a fine file. Ogni volta che eseguo una
interazione (ovvero un giro del codice contenuto nel ciclo) leggo una
riga dal file con il comando readln passandogli come parametri il
canale f e una stringa che conterrà la riga stessa e poi la stampo
grazie al comando writeln. Una volta che sono arrivato a fine file
stampo a video la stringa 'FINITO!'.
Da tenere ben presente è la dicitura EOF che significa End Of File e che serve ad identificare la fine del file.
About the author
xinyiman registered at Italian community of Lazarus and Free Pascal on Ottobre 14, 2011, 10:56:28 pm and has posted 3263 posts in the boards since then. Last visit was Ottobre 11, 2024, 03:54:30 pm.
Questo blog non rappresenta una testata giornalistica poiché viene
aggiornato senza alcuna periodicità. Non può pertanto considerarsi un
prodotto editoriale ai sensi della legge n. 62/2001.
Questo sito utilizza cookie, anche di terze parti, per offriti servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, acconsenti all’uso dei cookie.