Pascal - Gestion de fichiers
Pascal traite un fichier comme une séquence de composants, qui doivent être de type uniforme. Le type d'un fichier est déterminé par le type des composants. Le type de données de fichier est défini comme -
type
file-name = file of base-type;
Où, le type de base indique le type des composants du fichier. Le type de base peut être n'importe quoi comme, entier, réel, booléen, énuméré, sous-plage, enregistrement, tableaux et ensembles sauf un autre type de fichier. Les variables d'un type de fichier sont créées à l'aide de la déclaration var -
var
f1, f2,...: file-name;
Voici quelques exemples de définition de certains types de fichiers et variables de fichier -
type
rfile = file of real;
ifile = file of integer;
bfile = file of boolean;
datafile = file of record
arrfile = file of array[1..4] of integer;
var
marks: arrfile;
studentdata: datafile;
rainfalldata: rfile;
tempdata: ifile;
choices: bfile;
Création et écriture dans un fichier
Écrivons un programme qui créerait un fichier de données pour les dossiers des étudiants. Cela créerait un fichier nommé étudiants.dat et y inscrirait les données d'un étudiant -
program DataFiles;
type
StudentRecord = Record
s_name: String;
s_addr: String;
s_batchcode: String;
end;
var
Student: StudentRecord;
f: file of StudentRecord;
begin
Assign(f,'students.dat');
Rewrite(f);
Student.s_name := 'John Smith';
Student.s_addr := 'United States of America';
Student.s_batchcode := 'Computer Science';
Write(f,Student);
Close(f);
end.
Une fois compilé et exécuté, le programme créait un fichier nommé étudiants.dat dans le répertoire de travail. Vous pouvez ouvrir le fichier à l'aide d'un éditeur de texte, comme le bloc-notes, pour consulter les données de John Smith.
Lecture à partir d'un fichier
Nous venons de créer et d'écrire dans un fichier nommé étudiants.dat. Maintenant, écrivons un programme qui lirait les données de l'étudiant à partir du fichier -
program DataFiles;
type
StudentRecord = Record
s_name: String;
s_addr: String;
s_batchcode: String;
end;
var
Student: StudentRecord;
f: file of StudentRecord;
begin
assign(f, 'students.dat');
reset(f);
while not eof(f) do
begin
read(f,Student);
writeln('Name: ',Student.s_name);
writeln('Address: ',Student.s_addr);
writeln('Batch Code: ', Student.s_batchcode);
end;
close(f);
end.
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
Name: John Smith
Address: United States of America
Batch Code: Computer Science
Fichiers en tant que paramètre de sous-programme
Pascal permet aux variables de fichier d'être utilisées comme paramètres dans les sous-programmes standard et définis par l'utilisateur. L'exemple suivant illustre ce concept. Le programme crée un fichier nommé rain.txt et stocke certaines données de pluie. Ensuite, il ouvre le fichier, lit les données et calcule les précipitations moyennes.
Veuillez noter que, if you use a file parameter with subprograms, it must be declared as a var parameter.
program addFiledata;
const
MAX = 4;
type
raindata = file of real;
var
rainfile: raindata;
filename: string;
procedure writedata(var f: raindata);
var
data: real;
i: integer;
begin
rewrite(f, sizeof(data));
for i:=1 to MAX do
begin
writeln('Enter rainfall data: ');
readln(data);
write(f, data);
end;
close(f);
end;
procedure computeAverage(var x: raindata);
var
d, sum: real;
average: real;
begin
reset(x);
sum:= 0.0;
while not eof(x) do
begin
read(x, d);
sum := sum + d;
end;
average := sum/MAX;
close(x);
writeln('Average Rainfall: ', average:7:2);
end;
begin
writeln('Enter the File Name: ');
readln(filename);
assign(rainfile, filename);
writedata(rainfile);
computeAverage(rainfile);
end.
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
Enter the File Name:
rainfall.txt
Enter rainfall data:
34
Enter rainfall data:
45
Enter rainfall data:
56
Enter rainfall data:
78
Average Rainfall: 53.25
Fichiers texte
Un fichier texte, en Pascal, est constitué de lignes de caractères où chaque ligne se termine par un marqueur de fin de ligne. Vous pouvez déclarer et définir de tels fichiers comme -
type
file-name = text;
La différence entre un fichier normal de caractères et un fichier texte est qu'un fichier texte est divisé en lignes, chacune terminée par un marqueur de fin de ligne spécial, automatiquement inséré par le système. L'exemple suivant crée et écrit dans un fichier texte nommé contact.txt -
program exText;
var
filename, data: string;
myfile: text;
begin
writeln('Enter the file name: ');
readln(filename);
assign(myfile, filename);
rewrite(myfile);
writeln(myfile, 'Note to Students: ');
writeln(myfile, 'For details information on Pascal Programming');
writeln(myfile, 'Contact: Tutorials Point');
writeln('Completed writing');
close(myfile);
end.
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
Enter the file name:
contact.txt
Completed writing
Ajout à un fichier
Ajouter à un fichier signifie écrire dans un fichier existant qui contient déjà des données sans écraser le fichier. Le programme suivant illustre cela -
program exAppendfile;
var
myfile: text;
info: string;
begin
assign(myfile, 'contact.txt');
append(myfile);
writeln('Contact Details');
writeln('[email protected]');
close(myfile);
(* let us read from this file *)
assign(myfile, 'contact.txt');
reset(myfile);
while not eof(myfile) do
begin
readln(myfile, info);
writeln(info);
end;
close(myfile);
end.
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
Contact Details
[email protected]
Note to Students:
For details information on Pascal Programming
Contact: Tutorials Point
Fonctions de gestion de fichiers
Free Pascal fournit les fonctions / procédures suivantes pour la gestion des fichiers -
N ° Sr. | Nom de la fonction et description |
---|---|
1 |
procedure Append(var t: Text); Ouvre un fichier en mode ajout |
2 |
procedure Assign(out f: file; const Name:); Attribue un nom à un fichier |
3 |
procedure Assign(out f: file; p: PChar); Attribue un nom à un fichier |
4 |
procedure Assign(out f: file; c: Char); Attribue un nom à un fichier |
5 |
procedure Assign(out f: TypedFile; const Name:); Attribue un nom à un fichier |
6 |
procedure Assign(out f: TypedFile; p: PChar); Attribue un nom à un fichier |
sept |
procedure Assign(out f: TypedFile; c: Char); Attribue un nom à un fichier |
8 |
procedure Assign(out t: Text; const s:); Attribue un nom à un fichier |
9 |
procedure Assign(out t: Text; p: PChar); Attribue un nom à un fichier |
dix |
procedure Assign(out t: Text; c: Char); Attribue un nom à un fichier |
11 |
procedure BlockRead(var f: file; var Buf; count: Int64; var Result: Int64); Lit les données d'un fichier en mémoire |
12 |
procedure BlockRead(var f: file; var Buf; count: LongInt; var Result: LongInt); Lit les données d'un fichier en mémoire |
13 |
procedure BlockRead(var f: file; var Buf; count: Cardinal; var Result: Cardinal); Lit les données d'un fichier en mémoire |
14 |
procedure BlockRead(var f: file; var Buf; count: Word; var Result: Word); Lit les données d'un fichier en mémoire |
15 |
procedure BlockRead(var f: file; var Buf; count: Word; var Result: Integer); Lit les données d'un fichier en mémoire |
16 |
procedure BlockRead(var f: file; var Buf; count: Int64); Lit les données d'un fichier en mémoire |
17 |
procedure BlockWrite(var f: file; const Buf; Count: Int64; var Result: Int64); Écrit des données de la mémoire dans un fichier |
18 |
procedure BlockWrite(var f: file; const Buf; Count: LongInt; var Result: LongInt); Écrit des données de la mémoire dans un fichier |
19 |
procedure BlockWrite(var f: file; const Buf; Count: Cardinal; var Result: Cardinal); Écrit des données de la mémoire dans un fichier |
20 |
procedure BlockWrite(var f: file; const Buf; Count: Word; var Result: Word); Écrit des données de la mémoire dans un fichier |
21 |
procedure BlockWrite(var f: file; const Buf; Count: Word; var Result: Integer); Écrit des données de la mémoire dans un fichier |
22 |
procedure BlockWrite(var f: file; const Buf; Count: LongInt); Écrit des données de la mémoire dans un fichier |
23 |
procedure Close(var f: file); Ferme un dossier |
24 |
procedure Close(var t: Text); Ferme un dossier |
25 |
function EOF(var f: file):Boolean; Vérifie la fin du fichier |
26 |
function EOF(var t: Text):Boolean; Vérifie la fin du fichier |
27 |
function EOF: Boolean; Vérifie la fin du fichier |
28 |
function EOLn(var t: Text):Boolean; Vérifie la fin de la ligne |
29 |
function EOLn: Boolean; Vérifie la fin de la ligne |
30 |
procedure Erase(var f: file); Supprime le fichier du disque |
31 |
procedure Erase(var t: Text); Supprime le fichier du disque |
32 |
function FilePos( var f: file):Int64; Position dans le fichier |
33 |
function FileSize(var f: file):Int64; Taille du fichier |
34 |
procedure Flush(var t: Text); Écrit les tampons de fichiers sur le disque |
35 |
function IOResult: Word; Renvoie le résultat de la dernière opération d'E / S de fichier |
36 |
procedure Read(var F: Text; Args: Arguments); Lit un fichier dans une variable |
37 |
procedure Read(Args: Arguments); Lit un fichier dans une variable |
38 |
procedure ReadLn(var F: Text; Args: Arguments); Lit le fichier dans la variable et passe à la ligne suivante |
39 |
procedure ReadLn(Args: Arguments); Lit le fichier dans la variable et passe à la ligne suivante |
40 |
procedure Rename(var f: file; const s:); Renomme le fichier sur le disque |
41 |
procedure Rename(var f: file; p: PChar); Renomme le fichier sur le disque |
42 |
procedure Rename(var f: file; c: Char); Renomme le fichier sur le disque |
43 |
procedure Rename(var t: Text; const s); Renommer le fichier sur le disque |
44 |
procedure Rename(var t: Text; p: PChar); Renomme le fichier sur le disque |
45 |
procedure Rename( var t: Text; c: Char); Renomme le fichier sur le disque |
46 |
procedure Reset(var f: file; l: LongInt); Ouvre le fichier pour lecture |
47 |
procedure Reset(var f: file); Ouvre le fichier pour lecture |
48 |
procedure Reset(var f: TypedFile); Ouvre le fichier pour lecture |
49 |
procedure Reset(var t: Text); Ouvre le fichier pour lecture |
50 |
procedure Rewrite(var f: file; l: LongInt); Ouvre le fichier pour l'écriture |
51 |
procedure Rewrite(var f: file); Ouvre le fichier pour l'écriture |
52 |
procedure Rewrite(var f: TypedFile); Ouvre le fichier pour l'écriture |
53 |
procedure Rewrite(var t: Text); Ouvre le fichier pour l'écriture |
54 |
procedure Seek(var f: file; Pos: Int64); Définit la position du fichier |
55 |
function SeekEOF(var t: Text):Boolean; Définit la position du fichier à la fin du fichier |
56 |
function SeekEOF: Boolean; Définit la position du fichier à la fin du fichier |
57 |
function SeekEOLn(var t: Text):Boolean; Définit la position du fichier à la fin de la ligne |
58 |
function SeekEOLn: Boolean; Définit la position du fichier à la fin de la ligne |
59 |
procedure SetTextBuf(var f: Text; var Buf); Définit la taille du tampon de fichier |
60 |
procedure SetTextBuf(var f: Text; var Buf; Size: SizeInt); Définit la taille du tampon de fichier |
61 |
procedure Truncate(var F: file); Tronquer le fichier à la position |
62 |
procedure Write(Args: Arguments); Écrit la variable dans le fichier |
63 |
procedure Write(var F: Text; Args: Arguments); Ecrire une variable dans un fichier |
64 |
procedure Writeln(Args: Arguments); Écrit la variable dans le fichier et ajoute une nouvelle ligne |
65 |
procedure WriteLn(var F: Text; Args: Arguments); Écrit la variable dans le fichier et ajoute une nouvelle ligne |