DraaFil
Messages postés264Date d'inscriptionmercredi 16 avril 2003StatutMembreDernière intervention23 mars 2012
-
9 févr. 2006 à 17:46
Profil bloqué -
10 févr. 2006 à 13:24
Bonjours a tous,
J,ai une erreur de capacité depasser avec le code suivant :
'on change la taille restant à copier - soit la taille
'de la source moins la taille déjà copié (destination)
BTest = FSize - LOF(F2)
'on change la valeur de la barre de progression
barre.Value = (100 - Int(100 * BTest / FSize))
Loop Until BTest = 0
Je copie des fichierSSS et j'affiche une progressbar pour la copie de chaque fichier
si je mets cette ligne en commentaire, tout fonctionne numero un. est-ce que quelqu'un a une idée.
DraaFil
Messages postés264Date d'inscriptionmercredi 16 avril 2003StatutMembreDernière intervention23 mars 2012 9 févr. 2006 à 19:24
Merci pour vos reponse mias cela fais pareil, voici le code que j'utilise (trouver sur vbfrance mais je sais plus c'est a qui)
'Fonction de copie de fichier en VB v1.0
Function CopyFile(src As String, dst As String, barre As ProgressBar) As Boolean
'le buffer qui contiendra les données lues/écrites
Static Buf As String
'la variable qui contiendra la place disponible (octets)
Dim Free As Long
'variables contenant les tailles des fichiers
Dim BTest As Single, FSize As Single
'variable utilisée dans le cas ou le buffer n'est pas
'utilisé complétement...
Dim Chunk As Integer
'les numeros des fichiers
Dim F1 As Byte, F2 As Byte
'la taille du buffer
Const BUFSIZE = 1024
'la copie n'ayant pas été effectuée
CopyFile = False
'on ouvre les fichiers
F1 = FreeFile
Open src For Binary As F1
F2 = FreeFile
Open dst For Binary As F2
'la taille du fichier source
FSize = LOF(F1)
'la taille restant à copier, soit la même
BTest = FSize
'Ici commence la boucle qui va copier le fichier
Do
'Si la taille restant à copier est inférieure à la
'taille du buffer (fin de fichier), on "adapte" ce dernier
If BTest < BUFSIZE Then
Chunk = BTest
Else
Chunk = BUFSIZE
End If
'le buffer utilisé pour lire/écrire, de taille soit "normale" soit spéciale si < BUFSIZE
Buf = String(Chunk, " ")
'on lit dans la source
Get F1, , Buf
'pour écrire dans la destination
Put F2, , Buf
'permet d'intercepter les touches (éventuel ESC)
DoEvents
'on change la taille restant à copier - soit la taille
'de la source moins la taille déjà copié (destination)
BTest = FSize - LOF(F2)
'on change la valeur de la barre de progression
' barre.Value = (100 - Int(100 * BTest / FSize))
'barre.Value = (100 - CInt(100 * CDbl(BTest) / CDbl(FSize)))
barre.Value = 100 - BTest / FSize * 100
Loop Until BTest = 0
'on boucle tant qu'il le faut, soit tant que la taille restant à copier n'est pas nulle
'puis on ferme les fichiers
Close F1
Close F2
'remet à zéro la barre de progression
barre.Value = 0
'indique la fin, correcte, de copie
CopyFile = True
'et quittons la fonction
Exit Function
End Function
Avant d'ouvrir le fichier source faire un test s'il existe avec la fonction Dir
Une fois l'existence du fichir testée, voir si sa taille n'est pas nulle
Function CopyFile(src As String, dst As String, barre As ProgressBar) As Boolean
Dim Buf As String
Dim BTest As Long
Dim FSize As Long
Dim Chunk As Long
Dim F1 As Byte, F2 As Byte
Const BUFSIZE = 1024
if dir(src) = "" then Copyfile= False:Exit Function ' à rajouter
F1 = FreeFile
Open src For Binary As F1
F2 = FreeFile
Open dst For Binary As F2
FSize = LOF(F1)
if FSize = 0 then Copyfile=False:Exit Function ' à rajouter
BTest = FSize
Do
If BTest < BUFSIZE Then
Chunk = BTest
Else
Chunk = BUFSIZE
End If
Buf = Space$(Chunk)
Get F1, , Buf
Put F2, , Buf
BTest = BTest - Chunk
barre.Value = 100 - BTest / FSize * 100
DoEvents