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 :
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 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
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);
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
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);
Jusqu'ici il n'y a aucun problème.

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.