Un fichier texte est représenté en Pascal par le type TextFile. Pour pouvoir manipuler un fichier texte, il faut d'abord déclarer une variable de ce type. Par exemple:
var f: TextFile ;
Dans toutes les explications qui suivent, f désignera le fichier déclaré de cette manière.
Avant de pouvoir ouvrir un nouveau fichier texte, il faut d'abord associer la variable fichier au nom du fichier sur le disque. Cela se fait par la procédure AssignFile. Voici, par exemple comment associer f à un fichier nommé exemple.txt :
AssignFile(f,'exemple.txt');
Après avoir déclaré une variable de type fichier et assigné cette variable à un nom de fichier, on peut l'ouvrir en écriture. Cela a pour effet de créer un nouveau fichier vide. Attention : s'il existe déjà un fichier de même nom sur le disque le contenu de ce dernier sera perdu !
L'ouverture en écriture, se fait par la procédure rewrite, comme suit:
rewrite (f);
Dès que le fichier est ouvert en écriture, on peut y écrire du texte en utilisant la procédure writeln. Voici par exemple, comment créer un fichier texte 'exemple.txt' d'une ligne:
var f: TextFile; begin AssignFile (f,'exemple.txt'); rewrite(f); writeln (f,' Ceci est un fichier d'une ligne.'); CloseFile (f); end;
La procédure CloseFile appelée à la fin sert à fermer le fichier.
Comme on fait de l'accès séquentiel, une écriture se fait forcément après la ligne écrite juste avant. Donc après l'exécution du code suivant:
var f: TextFile; begin AssignFile (f,'exemple.txt'); rewrite(f); writeln (f,'Première ligne du fichier exemple.txt'); writeln (f,'Deuxième ligne du fichier exemple.txt'); CloseFile (f); end;
le fichier exemple.txt contiendra les deux lignes:
Première ligne du fichier exemple.txt Deuxième ligne du fichier exemple.txt
Pour ouvrir un fichier en lecture, on utilise la procédure reset de la manière suivante:
reset (f);
Comme pour l'ouverture en écriture, il faut que le fichier ait auparavant été assigné à un nom de fichier. Par contre, si ce fichier n'existe pas, cela provoquera une erreur.
Pour lire une ligne dans le fichier, on utilise la procédure readln, qui affecte la ligne courante à une variable L de type chaine de caractères:
readln (f, L);
Il s'agit ici d'un accès séquentiel, donc une lecture de ligne se fait nécessairement juste après la ligne lue précédemment.
Juste après l'ouverture du fichier, readln transfère la première ligne du fichier dans variable L.
A la deuxième exécution de cette procédure, L contiendra la 2ème ligne du fichier et de manière générale, après la nième exécution , L contiendra la nième ligne du fichier.
Bien entendu, on provoquera une erreur d'exécution si l'on essaie de lire au delà de la fin de fichier. Par exemple, si le fichier exemple.txt ne contient que 10 lignes, la 11ème exécution de readln (f, L); provoquera une erreur d'exécution.
Pour éviter cette erreur, il faut utiliser la fonction eof qui permet de tester si l'on se trouve en fin de fichier. Par exemple, le code suivant permet de lire toutes les lignes du fichier exemple.txt afin d'effectuer un certain traitement sur chaque ligne:
Var f : TextFile; L : String; begin AssignFile (f,'exemple.txt'); reset (f); while not eof (f) do begin readln (f,L); // Traitement de la ligne L end; CloseFile (f); end;