1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
OpenDialog1: TOpenDialog;
ProgressBar1: TProgressBar;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
public
end;
Const
NbOctet = 5000;
var
Form1: TForm1;
TgRestore : boolean = false;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer; // compteur de boucles
FSourceL : TFileStream; // Fichier à construire
NomDuFichier : String; // nom du fichier à construire
Step : integer; // limitation de l'affichage de la barre de progression
begin
SaveDialog1.Filter:='*.Sav';
if Savedialog1.Execute then begin // ouvre la boîte de dialogue 'enregistrer sous...'
ProgressBar1.Visible:=true; // Affichage de la barre de progression pendant la sauvegarde
NomDuFichier:='';
Repeat
NomDuFichier:=SaveDialog1.FileName; // récupère le nom du fichier
until (NomDuFichier<>'');
FSourceL:=TFileStream.Create(NomDuFichier, fmCreate or fmOpenWrite); // ouvre le fichier d'entrée en Stream File
try
step:=NbOctet div ProgressBar1.Width;
for i:=1 to NbOctet do begin // pour toutes les impulsions du filtre actif
if i mod step = 0 then begin
ProgressBar1.Position:=round(i*100 div NbOctet); // Position dans la barre de progression
Application.ProcessMessages;
end;
FSourceL.Write(i, SizeOf(i));
Button1.Caption:=IntToStr(i); // juste pour ralentir !
end;
finally
if assigned (FSourceL) then FSourceL.Free; // destruction de l'objet TfileStream
ProgressBar1.Visible:=false; // Fin de l'affichage de la barre de progression
Button2.Enabled:=true; // active le bouton 'Restauration'
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i : integer; // compteur de boucles
FSourceL : TFileStream; // Fichier à construire
NomDuFichier : String; // nom du fichier à construire
Entier : integer; // entier à restaurer
Step : integer; // limitation de l'affichage de la barre de progression
begin
Entier:=0;
OpenDialog1.Filter:='*.Sav';
if OpenDialog1.Execute then begin // ouvre la boîte de dialogue 'enregistrer sous...'
ProgressBar1.Visible:=true; // Affichage de la barre de progression pendant la sauvegarde
NomDuFichier:='';
Repeat
NomDuFichier:=OpenDialog1.FileName; // récupère le nom du fichier
until (NomDuFichier<>'');
FSourceL:=TFileStream.Create(NomDuFichier, fmOpenRead); // ouvre le fichier d'entrée en Stream File
try
step:=NbOctet div ProgressBar1.Width;
for i:=1 to NbOctet do begin // pour toutes les impulsions du filtre actif
if i mod step = 0 then begin
ProgressBar1.Position:=round(i*100 div NbOctet); // Position dans la barre de progression
Application.ProcessMessages;
end;
FSourceL.Read(Entier, SizeOf(Entier));
Button1.Caption:=IntToStr(i); // juste pour ralentir !
end;
finally
if assigned (FSourceL) then FSourceL.Free; // destruction de l'objet TfileStream
ProgressBar1.Visible:=false; // Fin de l'affichage de la barre de progression
end;
end;
end;
end. |
Partager