I file binari in Pascal sono file che memorizzano i dati nel loro
formato interno, senza convertirli in testo leggibile. Consentono
operazioni di lettura e scrittura più rapide, occupano meno spazio
su disco e permettono l'accesso diretto ai record tramite la
procedura Seek. Sono particolarmente indicati
per archivi e applicazioni gestionali.
Il tipo
file nel
linguaggio Pascal
Pubblicato il: 17-6-2026
Ultima Modifica: 17-6-2026
Gestione dei file binari nel linguaggio Pascal
Introduzione
Nel linguaggio Pascal esistono due principali categorie
di file:
File di testo (TextFile),
utilizzati per memorizzare dati leggibili dall'uomo.
File binari (File
o File of Tipo), utilizzati per
memorizzare dati in formato binario.
I file binari sono generalmente più veloci da leggere e
scrivere rispetto ai file di testo e occupano meno spazio
sul disco, poiché i dati vengono memorizzati nel loro
formato interno.
Dichiarazione di un file binario
Un file binario può essere dichiarato in due modi.
File non tipizzato
var
F: File;
Questo tipo di file può contenere qualsiasi dato.
File tipizzato
È il metodo più utilizzato.
var
F: File of Integer;
In questo caso il file potrà contenere solamente valori
di tipo Integer.
È possibile utilizzare qualsiasi tipo:
File of Real;
File of Char;
File of String;
oppure record personalizzati.
Creazione di un file binario
Per creare un file si utilizzano le procedure
Assign e Rewrite.
Esempio:
var
F: File of Integer;
begin
Assign(F, 'numeri.dat');
Rewrite(F);
Close(F);
end.
Spiegazione
Assign associa una variabile
file a un nome fisico sul disco.
Rewrite crea il file. Se
esiste già, viene cancellato e ricreato.
Close chiude il file.
Scrittura di dati in un file binario
Per scrivere si utilizza la procedura
Write.
Esempio:
var
F: File of Integer;
N: Integer;
begin
Assign(F, 'numeri.dat');
Rewrite(F);
N := 10;
Write(F, N);
N := 20;
Write(F, N);
N := 30;
Write(F, N);
Close(F);
end.
Dopo l'esecuzione il file conterrà tre numeri:
10
20
30
memorizzati però in formato binario.
Lettura di dati da un file binario
Per leggere si utilizza la procedura Read.
var
F: File of Integer;
N: Integer;
begin
Assign(F, 'numeri.dat');
Reset(F);
while not EOF(F) do
begin
Read(F, N);
Writeln(N);
end;
Close(F);
end.
Risultato
10
20
30
Aggiungere dati a un file esistente
Per aggiungere dati senza cancellare quelli già presenti:
var
F: File of Integer;
N: Integer;
begin
Assign(F, 'numeri.dat');
Reset(F);
Seek(F, FileSize(F));
N := 40;
Write(F, N);
Close(F);
end.
Spiegazione
FileSize(F) restituisce il
numero di record presenti.
Seek sposta il puntatore alla
fine del file.
Accesso diretto ai record
Uno dei vantaggi dei file binari è la possibilità di
leggere un record specifico senza leggere tutto il file.
var
F: File of Integer;
N: Integer;
begin
Assign(F, 'numeri.dat');
Reset(F);
Seek(F, 2);
Read(F, N);
Writeln('Valore: ', N);
Close(F);
end.
Poiché la numerazione parte da zero:
Record 0 = 10
Record 1 = 20
Record 2 = 30
verrà visualizzato:
Valore: 30
Utilizzo con i record
I file binari diventano particolarmente utili con i
record.
Definizione:
type
TPersona = record
Nome: string[30];
Eta: Integer;
end;
Dichiarazione del file:
var
Archivio: File of TPersona;
Scrittura:
var
Archivio: File of TPersona;
P: TPersona;
begin
Assign(Archivio, 'persone.dat');
Rewrite(Archivio);
P.Nome := 'Mario Rossi';
P.Eta := 45;
Write(Archivio, P);
Close(Archivio);
end.
Lettura:
var
Archivio: File of TPersona;
P: TPersona;
begin
Assign(Archivio, 'persone.dat');
Reset(Archivio);
while not EOF(Archivio) do
begin
Read(Archivio, P);
Writeln(P.Nome, ' - ', P.Eta);
end;
Close(Archivio);
end.
Verificare se un file esiste
if FileExists('numeri.dat') then
Writeln('File presente')
else
Writeln('File assente');
La funzione FileExists si trova
nell'unità SysUtils.
uses
SysUtils;
Cancellare un file binario
Per eliminare un file dal disco si utilizza la procedura
Erase.
var
F: File of Integer;
begin
Assign(F, 'numeri.dat');
Erase(F);
end.
È consigliabile verificare prima che il file esista:
uses
SysUtils;
var
F: File of Integer;
begin
if FileExists('numeri.dat') then
begin
Assign(F, 'numeri.dat');
Erase(F);
end;
end.
Conclusione
I file binari rappresentano uno strumento molto potente
del linguaggio Pascal. Consentono di memorizzare dati in
modo compatto e veloce, permettono l'accesso diretto ai
record tramite la procedura Seek e
sono particolarmente adatti alla realizzazione di archivi,
rubriche, database semplici e applicazioni gestionali. Le
operazioni fondamentali da ricordare sono:
Assign → associa il file a un
nome.
Rewrite → crea il file.
Reset → apre un file
esistente.
Write → scrive dati.
Read → legge dati.
Seek → sposta il puntatore.
FileSize → restituisce il
numero di record.
Close → chiude il file.
Erase → elimina il file.
Queste istruzioni costituiscono la base della gestione
dei file binari in Pascal e in Free Pascal/Lazarus.
Un piccolo appunto per Free Pascal e Lazarus: quando si
usano file di record che contengono stringhe, è spesso
preferibile utilizzare stringhe a lunghezza fissa (string[30],
string[50], ecc.) per garantire una
struttura del record stabile all'interno del file binario.