Bonjour,
merci pour toute votre aide si précieuse.
//-------
J'ai un problème avec les barres de progression.
elles n'arrivent pas au bout, tout du moins visuellement et j'aimerais savoir pourquoi ?
je trouve que cela ne fait pas très bien.
(je n'avais pas de problème sous Delphi 7 avec le même code)
le bout de code complet est joint au fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 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 = 5000000; var Form1: TForm1; 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 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 for i:=1 to NbOctet do begin // pour toutes les impulsions du filtre actif ProgressBar1.Position:=round(i*100/NbOctet); // Position dans la barre de progression FSourceL.Write(i, SizeOf(i)); 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 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 for i:=1 to NbOctet do begin // pour toutes les impulsions du filtre actif ProgressBar1.Position:=round(i*100/NbOctet); // Position dans la barre de progression FSourceL.Read(Entier, SizeOf(Entier)); 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.
merci et bonne journée à tous
Partager