Program Exemple; Var fichier:File Of String 20 ; (* D{claration des variables *) numero:Integer; nom:String 20 ; Procedure Liste; (* Proc{dure de listage *) Var pointeur:Integer; Begin Writeln('Voici le contenu du fichier : '); Seek(fichier,0); (* Positionnement du pointeur sur la fiche 0 avec *) (* Seek(nom logique, position) *) While Not Eof(fichier) Do (* Eof(nom logique) fonctionne comme le Eof du Basic, c'est @ dire renvoit *) (* VRAI si on est en fin de fichier et FAUX dans la cas contraire *) Begin pointeur:=Filepos(fichier); (* La variable pointeur re\oit le num{ro de la fiche courante *) (* avec Filepos(nom logique) *) Read(fichier,nom); (* Lecture de la fiche courante *) Writeln('Fiche ',pointeur,' : ',nom); End; End; Begin Assign(fichier,'NOMS.DAT'); (* Configuration du fichier *) Clrscr; Writeln('Cr{ation du fichier...'); Rewrite(fichier); (* cr{ation du fichier *) Repeat Write('Entrez un nom (FIN pour arreter) : ');Readln(nom); If nom<>'FIN' Then Write(fichier,nom); (* Ecriture dans la fiche courante *) Until nom='FIN'; Writeln('Fermeture du fichier...'); Close(fichier); Clrscr; Writeln('Ouverture du fichier avec RESET...'); Reset(fichier); (* Ouverture du fichier *) Liste; Write('Entrez un num{ro de fiche @ modifier : ');Readln(numero); If numero>filesize(fichier) Then Write('Impossible !') Else Begin Seek(fichier,numero); Write('Entrez le nouveau nom : ');Readln(nom); Write(fichier,nom); End; (* Filesize(fichier) renvoit le num{ro de la derni}re fiche du fichier *) (* Seek vous connaissez, et Write aussi, pas de probl}me *) Liste; Writeln('Fermeture du fichier...'); Close(fichier); (* Fermeture du fichier *) Writeln('Exemple fini.'); End. NOTA : Ce que j'ai d{nomm{ fiche s'appelle plus g{n{ralement enregistrement.  db 64+20,51 d