File/fr
│
Deutsch (de) │
English (en) │
français (fr) │
Dans un programme Pascal, une variable de type file peut être utilisée pour lire, écrire ou faire les deux dans un fichier. Une variable File est (généralement) associée à un fichier en utilisant la procédure AssignFile (anciennement juste Assign). (Voir File Handling In Pascal pour une approche plus objet et plus d'exemples.)
Types File
Binaire non typé
Le type file représente un fichier binaire non typé, ce qui signifie que c'est juste une suite de données (octets). Il peut être utilisé pour stocké n'importe quoi. Il peut être lu par BlockRead et écrit par BlockWrite (procédures). Le mot file est un reserved word en Pascal. Exemple :
{$mode objfpc}{$H+}
var
MyFile: file;
Data: array [0..99] of Byte;
begin
AssignFile(MyFile, 'a');
Reset(MyFile, 1 { size of read chunk });
try
BlockRead(MyFile, Data, SizeOf(Data));
finally
CloseFile(MyFile);
end;
end.
Pour des exemples de code plus importants, voir BlockRead documentation.
Typé binaire
Le type file of <type>, où <type> est n'importe quel type simple (pas de référence/pointeur) ou un type enregistrement, est un fichier binaire représentant un suite de valeur de type <type>. Par exemple, vous pouvez avoir des fichiers qui sont des séquences d'entiers, de valeurs réelles flottantes ou d'enregistrement (record, dans la mesure ou les champs sont aussi des types simples).
{$mode objfpc}{$H+}
var
MyFile: file of Single;
Data: Single;
begin
AssignFile(MyFile, 'singlevalues.bin');
try
Reset(MyFile);
Read(MyFile, Data);
finally
CloseFile(MyFile);
end;
end.
Fichier Texte
Le type TextFile (anciennement Text) représente un fichier texte. Reamrquez que cela est différent de seulement file of char. De confortables opérations de lecture et d'écriture sont disponibles pour les fichiers texte, qui analysent des entiers, des valeurs réelles flottantes et d'autres types. Aussi, les fins de lignes sont correctement traitées quand vous utilisez des fichiers texte.
Voir la page TextFile pour plus d'informations et d'exemples.
Travailler avec des fichiers
Travailler avec tous les types de fichiers est la même chose :
- Associer un fichier avec des données. Généralement en appelant AssignFile. Un équivalent ancien est Assign. (avec l'arrivée des bibliothèques d'IHM, la possibilité de conflit de noms avec les routines de fichier de Pascal s'est accrue. TPersistent et TForm (un descendant de TPersistent) ont des méthodes Assign et Close. A cause de cela, la confusion peut arriver si vous utilisez Assign ou Close dans des méthodes de TForm, par conséquent AssignFile et CloseFile ont été introduites comme alias pour les traditionnels Assign et Close, pour éviter un appel à un procédure inappropriée. Dans le code hors IHM, vous pouvez bien sûr employer Assign et Close, et économiser un peu de frappe).
- Ouvrir le fichier par Reset (lire un fichier existant, et peut-être écrire, voir ci-dessous), réécrire (effacer le contenu et écrire), ou ajouter en fin (conserver le contenu et écrire). dans le cas du Reset sur un fichier binaire non typé, la variable globale FileMode détermine si vous pouvez uniquement lire(fmOpenRead), ou lire et écrire (fmOpenReadWrite), dans le fichier.
- Ensuite lire/écrire les données du fichier par les procédures standard Read, Readln, write et writeln. Certains compilateurs Pascal utilisaient aussi les routines Get et Put pour les entrées/sorties. Pour les fichiers binaires non typés, utilisez BlockRead et BlockWrite.
- A la fin, libérer les ressources du fichier (et éventuellement nettoyer les données à écrire) en appelant CloseFile (anciennement Close).
Une variable fichier est utilisée soit pour les entrées, les sorties ou les deux ensembles (E/S). Un fichier peut être un écran et/ou un clavier, un modem, un crayon lumineux, un écran tactile, une souris, une aire de stockage sur disque, une socket pour la connection à Internet, ou cela peut être quelque autre périphérique selon la manière dont les bibliothèques lient le fichier. Dans certains cas, la mémoire réelle peut être définie comme un fichier, ceci est utilisé dans le cas d'un disque en mémoire (RAM disk). Vous pouvez personnaliser où se trouve les données du fichier en initialisant FileRec record (pour les fichiers binaires non typés) ou TextRec record (pour les fichiers texte), au lieu d'appeler les routines standard AssignFile (Assign).
Voir aussi
File-related types, procedures and functions: