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