TextFile

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.

 

home page
 

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.