Documente Academic
Documente Profesional
Documente Cultură
Manipulation de fichiers
I. Déclaration :
Utiles pour conserver toute sorte d’informations
programmes, textes, données, ... ),Pour utiliser un ou des
fichiers tout au long d'un programme ou dans une procédure, il
faudra l'identifier par une variable dont le type est en fonction
de l'utilisation que l'on veut faire du fichier.
Var f : Text;
2. Les fichiers typés (File of ...):
Les fichiers typés (File of) sont des fichiers dans lesquels les
données sont écrites telles qu'elles se présentent en
mémoire. On dit qu'elles sont écrites dans leur
représentation binaire. La taille du fichier résultera
directement et exactement de la taille en mémoire
qu'occupe telle ou telle variable.
Syntaxe :
Var f : File of {type};
Exemple :
Var f 1: File of Integer;
f2 : File of real;
3. Les fichiers simples (File):
Syntaxe :
Var f : File;
II. Assignation
Avant de travailler sur un fichier, il faut d'abord le
déclarer et lui associé un nom du fichier sur le disque, en lui
affectant une variable qui servira à désigner le fichier tout au
long du programme ou de la procédure dans laquelle il est
utilisé. Assign s'applique à tous les types de fichiers.
Syntaxe :
Assign (variable_d_appel, nom_du_fichier);
Remarque :
on ne peut pas écrire dans un fichier Text ouvert avec Reset !
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.
2. Ouverture en écriture
Pour créer un fichier qui n'existe pas ou bien
pour en effacer son contenu, on emploie Rewrite
qui permet d'effectuer des lectures (File of et File)
et écritures (Text, File of et File).
Remarque: On ne peut pas lire dans un fichier Text
ouvert avec Rewrite.
Syntaxe :
Rewrite (variable_d_appel);
Rewrite (variable_d_appel, taille);
Syntaxe Lecture Ecriture
Reset(f) Text File of
File of File
File
Rewrite(f) Text File of
File of File
File
Reset(f,taille) File File
Rewrite(f,taille) File File
3. Lecture et écriture
Pour lire le contenu d'une ligne d'un fichier Text ouvert, on utilise la
même instruction qui permet de lire la valeur d'une variable au clavier à
savoir ReadLn.
Syntaxes :
ReadLn (variable_d_appel, variable);
ReadLn (variable_d_appel, var1, var2, ... varN);
{ Attention, pas de Strings (sauf la dernière) }
Syntaxes :
BlockRead (f, variable, nbr);
BlockRead (f, variable, nbr, result);
BlockWrite (f, variable, nbr);
BlockWrite (f, variable, nbr, result);}
4. Fin du Fichier
En lecture, avant de faire un read, il faut tester si il
y a encore quelque chose a lire ; on n'a pas le droit de
faire un read si la fin du fichier est atteinte.
WriteLn text
readln text
write Text
File of
read Text
File of
BlockRead File
BlockWrite File
5. Fermeture:
Il est impératif de fermer les fichiers ouverts avant de terminer le
programme.
Syntaxe :
Close (variable_d_appel);
Reamrque:
Il est possible de rouvrir un fichier Text en cours de
programme même s'il a déjà été refermé, grâce à sa variable
d'appel.
La position courante du curseur sera alors positionnée à la
fin du fichier. Cela ne fonctionne qu'en écriture et qu'avec un Text.
Syntaxe :
Append (variable_d_appel);
{Ouvrir un fichier déjà existant en écriture}
III. Fichiers de texte
Lecture
read (f, c); lit un caractère dans f.
readln (f, s); lit une ligne complète
Déclaration dans f (toujours readln sur un string).
VAR read (f, x); lit un entier dans f. On peut
de la même manière lire un réel.
f : text;
c : char;
s : string[255]; Ecriture
x : integer; write (f, c) ; écrit un caractère dans f.
write (f, s); écrit le string dans f. Pour
r : real; passer a la ligne on fait writeln(f,s);
write (f, x, ' '); écrit un entier dans f.
IV. Fichiers d‘élements
Lecture
read (f, e);
lit un élément dans f. On ne fait jamais
Déclaration de readln.
TYPE element_t = record
age : integer;
majeur : boolean; Ecriture
end; write(f, e);
VAR f : file of element_t; écrit un élément dans f. On ne fait
jamais de writeln.
e : element_t;
V. Schémas types
Mettre un vecteur vec de nb éléments dans un fichier.
TYPE element_t = record
age : integer;
majeur : boolean;
end;
VAR f : file of element_t;
vec : array [1..vmax] of element_t;
nb, i : integer;
BEGIN
assign (f, ‘nomf’);
rewrite (f);
for i := 1 to nb do
write (f, vec[i]);
close (f);
END;
Opération inverse ; on ne connait pas nb au depart.