• Aucun résultat trouvé

Le type fichier

Dans le document [PDF] Document complet Delphi pdf (Page 34-36)

1. Définition

Un fichier est un ensemble ordonné d'éléments du même type. Les routines standard d'Entrées/Sorties utilisent les types prédéfinis TextFile et Text qui représentent un fichier contenant des caractères organisés en lignes. Pour davantage d'informations sur les entrées et sorties de fichier, voir Routines standard et d'E/S.

Pour déclarer un type fichier, utilisez la syntaxe : type <nomTypeFichier> = file of <type>

où nom<TypeFichier> est un identificateur valide et type un type de taille fixe. Les types pointeur, implicites ou explicites ne sont pas permis. Un fichier ne peut donc pas contenir des tableaux dynamiques, des chaînes longues, des classes, des objets, des pointeurs, des variants, d'autres fichiers ou des types structurés en contenant.

2. routines d'entrées/sorties

Append, procédure Prépare un fichier exis tant pour l'ajout de texte

BlockRead, procédure Lit un ou plusieurs enregistrements d'un fichier ouvert et les place dans une variable

BlockWrite, procédure Écrit un ou plusieurs enregistrements d'une variable mémoire dans un fichier ouvert

Eof, fonction La fonction Eof détermine si la position en cours du pointeur se trouve en fin de fichier

FileMode, variable Détermine le mode d'accès à utiliser lorsque des fichiers typés ou non typés sont ouverts avec la classe Reset

FilePos, fonction Renvoie la position en cours dans un fichier

FileSize, fonction Renvoie la taille d'un fichier (en octets) ou le nombre d'enregistrements dans le fichier

IOResult, fonction Renvoie l'état de la dernière opération d'E/S

Input, variable Spécifie un fichier en lecture seule associée à un périphérique d'entrée standard du système d'exploitation

MkDir, procédure Crée un nouveau répertoire

Output, variable Spécifie un fichier en écriture seulement associé à une sortie standard, généralement l'affichage

Rename, procédure Renomme un fichier externe

Reset, procédure Ouvre un fichier existant

Rewrite, procédure Crée puis ouvre un nouveau fichier

RmDir, procédure Supprime un sous-répertoire vide

Seek, procédure Déplace la position en cours dans un fichier vers le composant spécifié Truncate, procédure Efface tous les enregistrements situés après la position en cours dans le

fichier

Write, procédure (for typed files) Écrit dans un fichier typé. 3. Routines de fichiers texte

AssignPrn, procédure Affecte une variable fichier texte à l'imprimante

Eoln, fonction Eoln détermine si la position en cours du pointeur se trouve en fin de ligne d'un fichier texte Erase, procédure Supprime un fichier externe

Flush, procédure Efface le tampon associé à un fichier texte ouvert en écriture Read, procédure Read lit les données d'un fichier

Readln, procédure Lit une ligne de texte dans un fichier SeekEof, fonction Renvoie l'état de fin d'un fichier

SeekEoln, fonction Renvoie l'état de fin de ligne d'un fichier SetTextBuf, procédure Affecte un tampon d'E/S à un fichier texte Write, procédure (for text files) Écrit dans un fichier texte

Writeln, procédure Place une marque de fin de ligne dans un fichier texte.

4. Routines de gestion de fichiers

AssignFile, procédure Associe le nom d'un fichier externe à une variable fichier ChDir, procédure Change le répertoire en cours

Constantes en mode ouverture de fichier

Les constantes de mode d'ouverture de fichier sont utilisées pour contrôler le mode d'accès au fichier ou au flux

Constantes mode de fichier Les constantes mode de fichier sont utilisées pour ouvrir et fermer des fichiers disque CreateDir, fonction Crée un nouveau répertoire

DeleteFile, fonction Supprime un fichier du disque

DiskFree, fonction Renvoie le nombre d'octets disponibles sur le lecteur spécifié DiskSize, fonction Renvoie la taille en octets du disque spécifié

FileClose, procédure Ferme le fichier spécifié

FileDateToDateTime, fonction Convertit une valeur date ou heure DOS en valeur au format TDateTime FileExists, fonction Teste si le fichier spécifié existe.

FileGetAttr, fonction Renvoie les attributs du fichier FileName FileGetDate, fonction Renvoie la date et l'heure DOS du fichier spécifié FileOpen, fonction Ouvre un fichier en utilisant le mode d'accès spécifié FileRead, fonction Lit le nombre d'octets spécifié dans un fichier FileSearch, fonction Recherche un fichier dans le chemin DOS spécifié FileSeek, fonction Positionne le pointeur d'un fichier préalablement ouvert FileSetAttr, fonction Définit les attributs du fichier spécifié

FileSetDate, fonction Définit la marque horaire du fichier DOS spécifié

FileWrite, fonction Ecrit le contenu du tampon à l'emplacement en cours dans un fichier FindClose, procédure Libère la mémoire allouée par FindFirst

FindFirst, fonction Cherche la première occurrence d'un fichier avec un ensemble d'attributs précis dans un répertoire spécifié.

FindNext, fonction Renvoie l'entrée suivante correspondant au nom et aux attributs spécifiés dans un précédent appel à FindFirst

GetCurrentDir, fonction Renvoie le nom du répertoire en cours

GetDir, procédure Renvoie le répertoire en cours sur le lecteur spécifié RemoveDir, fonction Efface un répertoire vide existant

RenameFile, fonction Renomme un fichier

SetCurrentDir, fonction Définit le répertoire en cours.

5. Exemples

Const Max=100;

type TDonnees=record

Nom, Prenom : string[50]; // ne pas utiliser des string, ansiString ou Pchar !!

adresse:string[150]; cdPostl:integer; end; TBase=record item:Array[1..Max] of TDonnees; nbitem :integer; end; var

fic : file of tBase;

nomtb : tbase ...

// Pour enregistrer la base de données sur disque assignfile(fic,'toto.tab'); rewrite(fic); write(fic,montb); closefile(fic); ...

// Pour récupérer la base de données du disque assignfile(fic,'toto.tab'); reset(fic); read(fic,montb); closefile(fic); ATTENTION:

Il serait très tentant d’utiliser: type TDonnees=record

Nom,Prenom, adresse:string; cdPostl:integer;

end;

à la place de la déclaration ci-dessus. Cela éviterait de tronquer les chaînes ou de les surdimensionné (pour éviter un encombrement inutile de la mémoire). Il n’y aurait aucune différence de comportement (apparent) pour tout ce qui est stockage des données en mémoire.

Le problème apparaîtrait lors de l’instruction: write(fic,montb);

Delphi et Kilix 36 D. Mailliet en effet, on n’enregistrerait pas les valeurs des Nom,Prenom, adresse mais des pointeurs référençant les adresses de ces valeurs. Ce qui n’aurait aucun intérêt, puisque la création est dynamique et qu’une autre exécution sur le même ordinateur ne donnerait pas les mêmes adresses pour ces valeurs. Ne parlons pas d’une exécution sur une autre machine!

Et le compilateur s’en rend compte (et c’est heureux) et il le signale par une erreur à la compilation.

Dans le document [PDF] Document complet Delphi pdf (Page 34-36)