yunderwo
Messages postés23Date d'inscriptionmardi 27 janvier 2004StatutMembreDernière intervention22 mars 2006
-
20 mai 2005 à 09:07
yunderwo
Messages postés23Date d'inscriptionmardi 27 janvier 2004StatutMembreDernière intervention22 mars 2006
-
26 mai 2005 à 10:05
Bonjour,
J'ai une petite appli qui notament, copie un fichier dans un repertoire
précis, je souhaite mettre en place une progressbar, pour indiquer
l'avancement de la copie a l'utilisateur.
N'ayant jamais pratiqué la "progressbar" je ne sais par ou commencer...
cs_jaco2
Messages postés19Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention10 janvier 2006 26 mai 2005 à 09:03
Non car le fichier est entièrement copié pendant FileCopy qui ne te donne aucun état de l'avancement. Tu ne peux donc le calculer.
Un autre moyen consisterait à copier le fichier : ouverture binaire puis en boucle des get et des put par blocs.
A chaque pas de la boucle, tu calcule ta progress bar.
Ex (pas testé, rapidos):
dim L as long, C as long (ou double si ton fich dépasse 2 Go)
dim V as double
dim tmp as string
Open FichOri for binary as #1
Open FichDest for binary as #2
close #2 'cette ligne et les 2 suivantes pour détruire
kill FichDest 'le fich destination s'il existe
Open FichDest for binary as #2
Progressbar1.min=0:Progressbar1.max=1000
L=lof(1):C=0
seek #1,1:seek #2,1
while not eof(1)
tmp=space$(10000) 'copie par blocs de 10 Kà environ
get #1,tmp
put #1,tmp
C= C+10000
V=C:V=1000*V/L
Progressbar1.value=int(V)
Form1.refresh
wend
close #1:close #2
cs_jaco2
Messages postés19Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention10 janvier 2006 26 mai 2005 à 06:30
Si tu copies qu'un seul gros fichier avec FileCopy, je ne vois guère de solution.
Si ce sont plusieurs fichiers ou un gros fichier copié par lecture/écriture, je fais comme ceci :
1 - avant la copie, boucle pour calcul taille totale par lecture avec des LOF sur les fichiers
2 - en cours de copie, dans une boucle, calcul de la taille totale déjà copiée, du %, voire du temps restant (par extrapolation avec Timer entre déjà fait et reste à faire), puis mise à jour de la progress bar (propriétés min, max et value) et enfin refresh de la form pour assurer l'affichage