Mise en place d'une ProgressBar

Résolu
yunderwo Messages postés 23 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 22 mars 2006 - 20 mai 2005 à 09:07
yunderwo Messages postés 23 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 22 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...

Pourriez-vous me donner une piste ?



Milles mercis....

9 réponses

cs_jaco2 Messages postés 19 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 10 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

Jaco
3
yunderwo Messages postés 23 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 22 mars 2006
20 mai 2005 à 09:09
J'ai oublié je suis en VB Net...
0
cs_steppenwolf Messages postés 84 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 29 décembre 2006
20 mai 2005 à 09:36
Salut !

tu peux aller voir ce code :http://www.vbfrance.com/code.aspx?id=7614


Ca explique le fonctionnement d'une progressbar ms c pas du .NET... Ms bon c tj ca !!!

A+
0
cs_steppenwolf Messages postés 84 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 29 décembre 2006
20 mai 2005 à 09:48
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yunderwo Messages postés 23 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 22 mars 2006
20 mai 2005 à 14:32
En fait, je ne sais pas comment proceder pour lui envoyer l'etat d'avancement de la copie du fichier...
0
cs_jaco2 Messages postés 19 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 10 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

Jaco
0
yunderwo Messages postés 23 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 22 mars 2006
26 mai 2005 à 08:33
En fait je n'ai qu'un fichier à copier.

Ta méthode ne peux s'appliquer à un seul fichier ?



merci
0
cs_jaco2 Messages postés 19 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 10 janvier 2006
26 mai 2005 à 09:09
L'ex ci-dessus, par boucle lect/ecr risque de rallonger fortement la copie par rapport à un FileCopy, à voir ...

Jaco
0
yunderwo Messages postés 23 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 22 mars 2006
26 mai 2005 à 10:05
Merci à toi Jaco



Bonne journée
0
Rejoignez-nous