180 likes | 298 Views
TP : Fichiers et Tableaux. Séance N°2 Avril 2012. Application de Gestion de stock Partie 1 : les fichiers. Révisons ,,,. Program TP; uses CRT;. Type Article = record Ref : Byte; Etat: boolean ; Nom : string[20]; qte : Byte; Stck_min : Byte; Prix_uni : Word; Prix_total : Word;
E N D
TP : Fichiers et Tableaux Séance N°2 Avril 2012
Program TP;uses CRT; Type Article = record Ref: Byte; Etat: boolean; Nom : string[20]; qte: Byte; Stck_min: Byte; Prix_uni: Word; Prix_total: Word; end; Var F: file of article;
Begin • Clrscr; • Assign (F,‘stock.dat’);
rewrite(F); For i:=1 to 20do Begin Readln (art.Ref); art.etat := True ; Readln (art.nom); Readln (art.qte); Readln (art.Stck_min); Readln (art.Prix_uni); Readln (art.Prix_total); Write(F , art); End;
Seek(F,0); Read(F, art); art.Etat:= false; write(F,art); Seek(F,1); Read(F, art); art.Etat:= True; write(F,art); reset (F); whilenot eof(F) do begin read(F, art); writeln(art.ref); end;
close(F); • Readkey; • end.
Taille d’un fichier = nombre d’enregistrements Filesize (nom_logique);
Accès direct à un enregistrement dans un fichier Seek (nom_logique, expression_entière) Exemples: Seek(F, 0) Seek(F, FileSize(F)-1) Numéro d’enregistrement 1er enregistrement Dernier enregistrement
Seek(F, FileSize(F)); For i:=1 to 3 do Begin Readln(art.Ref); art.etat := True; Readln(art.nom); Readln(art.qte); Readln(art.Stck_min); Readln(art.Prix_uni); Readln(art.Prix_total); Write(F , art); End;
Suppression d’un enregistrement La suppression se fait logiquement(Cas1) et physiquement (Cas2): • Cas1: Par l'utilisation d'un champ dédié (exemple état (string) = '1'si présent ou '0' sinon) • Cas2: Par l'utilisation d'un fichier (de même structure) pour copier les enregistrements de notre fichier sauf celui à supprimer.
Utilisons la première méthode • Ajouter le champ Etat dans le record : Etat: Boolean; • Ajouter l’instruction suivante dans toutes les opérations d’ajout: art.Etat:= True; • Ajouter à la fin du programme le bloc suivant: Seek(F,1); Read(F, art); art.Etat:= True; write(F,art);
Fin première partie,,, Evaluation next-Time !
Seek (F,1) ; Read(F, art); Art.etat := false; Write (F, art);
Exercice • Supprimer le premier article • Récupérer le deuxième • Afficher les références de tous les articles