Salut !
Dans un but pédagogique, J'essaie de manipuler les fichiers séquentiels structurés sous Pascal.
Les opérations de base sont : la création, la lecture et la mise à jour.
J'ai pris l'exemple d'un fichier qui contient des coordonnées 2D d'un ensemble de points dont voici la déclaration :
Pour la création du fichier :
Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 type point = record X, Y : integer ; end ; TRACE = file of point ; var FichPoint : TRACE; p : point;
Pour la lecture :
Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 {Ce code Créer le fichier est y ajoute deux éléments} assign(FichPoint, 'c:fich.dat') ; rewrite (fichPoint); p.x:=20; p.y:=25; write(FichPoint,p); p.x:=30; p.y:=45; write(FichPoint,p); close(FichPoint);
Jusqu'ici il n'y a aucun problème.
Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 {Ce code parcours le fichiers et affiche l'ensemble des points} assign(FichPoint, 'c:fich.dat') ;} reset(FichPoint); while Not(EOF(FichPoint)) do begin read(FichPoint,p); writeln(p.x); writeln(p.y); writeln('***'); end; close(FichPoint);
Maintenant, je voudrais effectuer une mise à jour sur ce fichier.
Corrigez-moi svp si je me trompe, il me semble que pour un fichier séquentiel, la seule opération de mise à jour possible est l'ajout en fin de fichier (impossible d'ajouter un élément au milieu du fichier).
Mais alors, comment ajouter un élément en fin de fichier, sans écraser son contenu ?
En utilisant Rewrite, le fichier est détruit et avec Reset, le pointeur est au début du fichier !
Avez-vous des idées ?
PS : Je sais qu'il est préférable dans ce cas de travailler avec des fichiers à accès direct ; j'essaie uniquement de lever certaines zones d'ombre des fichiers séquentiels.
Partager