Prograssebar progresse a fur et à mesure qu'un fichier se copie

Résolu
vbnino Messages postés 218 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 11 juillet 2010 - 22 mai 2007 à 21:29
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 23 mai 2007 à 11:17
Salut!

-Comment faire pour que une prograssebar progresse a fur et à mesure qu'un fichier se copie?

-Merci

14 réponses

cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
23 mai 2007 à 10:18
Il y a une source de Darksidious

http://www.vbfrance.com/codes/DEFILLEMENT-COPIE-DOSSIER_18132.aspx

Elle répond à la question posée initialement.

jmfmarques: je n'ai pas encore pris le temps de regarder FileCopyEx.   Vu que ma fonction est codée dans une DLL, je l'appelle via une seule ligne de code.   La "lourdeur" de la fonction est donc "oubliée" dans ma programmation quotidienne

Christophe
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
22 mai 2007 à 21:30
Salut,

comment savoir ta méthode de copie ?
T'as un bout de code ?

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
22 mai 2007 à 21:36
Bonsoir,

Question : as-tu trouvé le truc qui te permette de connaître l'état d'avancement d'une copie de fichier ? (moi non, jusqu'à présent)
Selon ta réponse :
- si oui : je t'en supplie : publie ce truc..
- si non : alors il va falloir que tu fasses comme tout le monde : que tu "estimes" le temps de chargement en fonction de la taille du fichier, de l'horloge de ta machine, de l'encombrement du processeur, etc... etc...
Cette chose n'est pas trop difficile lorsque que la copie concerne plusieurs fichiers (on peut "ajuster" l'estimation de la durée en fonction des constatations faites lors de la copie des 1ers éléments). Il en va différemment lorsqu'un seul fichier est à copier (pas de "repères d'ajustement" possibles alors, bien évudemment...)
Une fois cette durée "estimée", le reste est un jeu d'enfant : faire avancer la barre en proportion du temps écoulé.
0
vbnino Messages postés 218 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 11 juillet 2010
22 mai 2007 à 21:39
Je utilise Filecopy

-Vous avez un exemple
0

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

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
22 mai 2007 à 21:41
Salut Jacques,

je me demandais, c'est pas possible (certainement approximativement) de lire en binaire (avec Open .. For) et d'écrire en même temps ?
(on compte le nombre de ligne, et on clacul un % avec ces nombres) ?

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
22 mai 2007 à 21:51
Bonjour Mprtalino,

Ce doit être possible, oui, mais à quel prix en temps d'exécution ?
Mme Windows l'évite, apparemment (ses barres de progressions restent on ne peut plus approxumatives, comme tu peux le constater, quand ont fait une copie depuis un endroit vers l'autre de longs fichiers, dans l'explorateur)
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
22 mai 2007 à 21:56
Oui, c'est vrai
En plus, si tu copies, et d'un coup tu fais autre chose, vu que le processeur est demandé, il augmente le temps de copie.

Pas évident, quoi !

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
22 mai 2007 à 21:59
CQFD

Conclusion : l'utilisation d'un affichage de progression de copie peut être envisagé lorsque plusieurs fichiers sont copiés (la durée constatée de copie des premiers permettant d'estimer la durée totale).
Il en va différemment s'il ne s'agit que d'un seul fichier (on ne peut alors valablement se "raccricher" à aucune "expérience").
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 mai 2007 à 00:30
Salut tout le monde,
une idée fofolle , jamais essayé ...théorique quoi


>Un label (couleur BackColor au choix)
>Un Timer


Label.Width=0


Sub Copier_Un_Fichier
    Timer.Enabled=True
    FileCopy ....
    Label.Width=<valeur maximal>
    Timer.Enabled=False
    MsgBox "Terminé"
End Sub


Sub Tumer()
 Label.Width=Label.Width+60
End Sub


Question qui se pose : Est ce que FileCopy monopolisera le système
pour empêcher l' instruction qui suit de s' éxécuter ?


<hr />

® l l i n g , l' agité du bocal : 
   Etre une heure, une heure seulement..Rien qu' une heure,
   Vert, vert, vert et beau à la foooooooooooooooooooooooois. 
<hr />
0
cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
23 mai 2007 à 08:41
Si cela t'est possible; pourquoi ne pas faire appel à la fonction API de Windows.

Private Type SHFILEOPSTRUCT
   hwnd As Long
   wFunc As Long
   pFrom As String
   pTo As String
   fFlags As Long
   fAnyOperationsAborted As Long
   hNameMappings As Long
   lpszProgressTitle As String
End Type

Private Declare Function SHFileOperation Lib "Shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

Public Function ZCopyFile(ByVal sSourceFileName As String, ByVal sTargetFileName As String, _
   Optional bAskConfirmation As Boolean = True, Optional ByVal hwnd As Long = 0) As Boolean
  
Dim shFile As SHFILEOPSTRUCT
Dim wResult As Long
Dim wFlags As Long

   If Not bAskConfirmation Then wFlags = FOF_ALLOWUNDO Or FOF_NOCONFIRMATION Else wFlags = FOF_ALLOWUNDO
  
   With shFile
      .hwnd = hwnd
      .wFunc = FO_COPY
      .pFrom = sSourceFileName & vbNullChar & vbNullChar
      .pTo = sTargetFileName & vbNullChar & vbNullChar
      .fFlags = wFlags
   End With
  
   wResult = SHFileOperation(shFile)
   ZCopyFile = (wResult = 0) And (shFile.fAnyOperationsAborted = 0)

End Function, ----
(Coloration syntaxique automatique par Kenji)

Christophe
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
23 mai 2007 à 09:08
Bonjour,

Si c'est pour se contenter de çà, autant alors se servir de la fonction FileCopyEx de la librairie Kernel32 de l'Api de Windows (elle sera aussi peu précise mais aura le mérite de "bouffer" moins de place !!)

Si on veut variment de si peu, je peux faire, y compris avec une "progressebar" affichant en son centre le "pourcentage" d'avancement !

Ya qu'à dire...
0
cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
23 mai 2007 à 09:26
Bonjour jmfmarques, pas sûr de te suivre sur ce coup.   

C'est certain que la méthode que j'ai mentionné occupe plusieurs lignes de code mais, à l'utilisation, elle me plaît assez bien.   J'aurais aimé être capable de changer le caption de la fenêtre mais bon, ce qui est avantageux, ce que l'utilisateur connaît déjà le look&feel de cette fenêtre, la possibilité d'écraser un fichier avec ou sans confirmation, la possibilité d'annuler la copie au besoin, ...

Christophe
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
23 mai 2007 à 09:36
Bonjour cavo789

Oui ?
Et alors ? T'as jeté un couip d'oeil à ce que fait la fonction FileCopyEx ?
La même chose en direct !
Mais les résultats ne sont pas vraiment exacts, ni pour l'une (la tienne), ni pour l'autre (la mienne)
Je viens par ailleurs de tomber (en cherchant) sur cette source :
http://files.codes-sources.com/fichier.aspx?id=732&f=CopyFileProgress.frm

Elle est encore plus aléatoire en ce sens qu'elle se base sur l'évolution de l'occupation du lecteur ....
(vaut mieux ne pas penser à ce qui se passerait si d'autres opérations, lancées parallèlement...faisaient dans le même temps évoluer elles aussi cette occupation !!!)
Bref...
Je vais donc préparer cet après midi une source (que je n'aime pas, mais qui sera "moins pire" )

A bientôt, donc.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
23 mai 2007 à 11:17
Ah...
Je vois que DARKSIDIOUS lui aussi utilise FileCopyEx... (je suis d'accord avec lui car c'est la méthode la "moins pire")...
0
Rejoignez-nous