cs_bjark
Messages postés2Date d'inscriptionmardi 10 octobre 2006StatutMembreDernière intervention21 octobre 2006 21 oct. 2006 à 10:36
Merci pour la reponse.
Je vais essayer cela des que possible.
Bjark
cs_labout
Messages postés1356Date d'inscriptionsamedi 8 décembre 2001StatutMembreDernière intervention23 octobre 20068 19 oct. 2006 à 14:46
Pour BJARK
Il suffit de modifier la fonction CopyDirectory comme suit
Function CopyDirectory(ByVal mFolderSrc As String, ByVal mFolderCible As String, ByVal bStatus As Boolean) As Boolean
' Si pas de barre de progression passer le 3 ème paramètre false, sinon Trus
Dim cTab As New Collection
Dim atab() As String
Dim oRep As Object
Dim srep As String
Dim i As Integer, j As Integer, k As Integer, iPos As Integer
Dim sfichier As String
Dim sDir As String
Dim mFolderDebut As String
Dim iIncr As Integer
Dim frm As New Status
If bStatus Then
frm.Show()
End If
Try
Dim dirs As String() = Directory.GetDirectories(mFolderSrc)
Dim dir As String
Dim sSource As String
Dim sCible As String
cTab.Add(mFolderSrc)
For Each dir In dirs
cTab.Add(dir)
' Analyse des sous répertoires
AnalyseFolder(dir, cTab)
Next
' Mise en place de la copie
' création des repertoires
If InStr(mFolderSrc, "") > 0 Then
For k = 1 To Len(mFolderSrc)
If Mid(mFolderSrc, k, 1) = "" Then
iPos = k
End If
Next
mFolderDebut = Mid(mFolderSrc, 1, iPos - 1)
Else
' c'est A: par exemple
If InStr(mFolderSrc, ":") = 0 Then
MsgBox("Adresse source incorrecte", MsgBoxStyle.Exclamation)
Return False
Else
mFolderSrc = Mid(mFolderSrc, 2)
End If
End If
For i = 1 To cTab.Count
oRep = cTab.Item(i)
srep = oRep.ToString
' création des repertoires et sous repertoires
sDir = Replace(srep, mFolderDebut, mFolderCible)
If Directory.Exists(sDir) = False Then
Directory.CreateDirectory(sDir)
End If
Next
If bStatus Then
frm.ProgressBar1.Value = 0
iIncr = 100 / cTab.Count
End If
'Copie des fichiers
For i = 1 To cTab.Count
If bStatus Then
If (frm.ProgressBar1.Value + iIncr) < 100 Then
frm.ProgressBar1.Value = frm.ProgressBar1.Value + iIncr
Else
frm.ProgressBar1.Value = 100
End If
End If
oRep = cTab.Item(i)
srep = oRep.ToString
Dim aTabf As Array
aTabf = ListeFichiers(srep)
For j = 0 To UBound(aTabf)
sSource = CType((srep & Replace(aTabf(j), srep, "")), Object).ToString
sCible = CType(Replace(aTabf(j), mFolderDebut, mFolderCible), Object).ToString
File.Copy(sSource, sCible, True)
Next
Next
If bStatus Then
frm.Close()
End If
frm.Dispose()
frm = Nothing
Return True
Catch e As Exception
MsgBox("Erreur " & e.Source & " " & e.Message & vbCrLf & "La copie ne s'est pas faite ou est incomplête", MsgBoxStyle.Critical)
Return False
End Try
End Function
Puis de recompiler la dll
Bye
cs_labout
Messages postés1356Date d'inscriptionsamedi 8 décembre 2001StatutMembreDernière intervention23 octobre 20068 18 oct. 2006 à 18:11
Il faut rechercher dans le projet CopyDirectory et flagger ce qui fait apparaitre la barre
cs_bjark
Messages postés2Date d'inscriptionmardi 10 octobre 2006StatutMembreDernière intervention21 octobre 2006 11 oct. 2006 à 12:05
Bonjour
Je viens d'essayer ta dll sur un petit programme que je realise.
tout fonctionne impec mais je voudrais faire disparaitre la progressbar sur la commande myDll.CopyDirectory(x,y) ... tu peux me donner la marche a suivre ?
Merci
A+
Entar
Messages postés3Date d'inscriptionvendredi 4 février 2005StatutMembreDernière intervention25 février 2005 5 févr. 2005 à 13:11
Merci pour ce complement d'information. :)
cs_labout
Messages postés1356Date d'inscriptionsamedi 8 décembre 2001StatutMembreDernière intervention23 octobre 20068 4 févr. 2005 à 20:52
frm =nothing est suppreflu
par contre frm.dispose() permet de libérer la mémoire.
les variables Tab désignent des tableaux et cTab car un stableau de string c comme caractère.
@+
Entar
Messages postés3Date d'inscriptionvendredi 4 février 2005StatutMembreDernière intervention25 février 2005 4 févr. 2005 à 10:57
je viens de tester ta dll dans mon application(qui effectue des sauvegardes). J'ai cherché durant un certain temps à faire une copie recursive des dossiers(sous dossiers et fichiers compris). Ta Dll le fait a merveille. J'aurais tout de même des remarques. bon je suis nouveau, et j'aime étudier les sources des autres dans le but d'apprendre(je crois qu'on est tous là pour ca ^^).
ma remarque porte sur les noms des variables, si il y en a ou j'ai aucun probleme à comprendre ce que c'est ou quel est leur fonction, pour d'autre on ne sait pas ce qu'elle contienne ou leur role en regardant leur nom.
je pense à la variable Ctab, j'ai du aller voir la fonction annalysefolder pour un peu mieux comprendre. ce qui est un peu dommage.
Sinon il y a des parfaits exemples de fonction récursive.
encore une question. pourquoi pour ta barre de progression tu fait ;
frm.close
frm.dispose
frm=notihng?
il me semblait qu'en faisant .close on fait les 3 operations suscitées?.
borntoclimb
Messages postés98Date d'inscriptionvendredi 4 janvier 2002StatutMembreDernière intervention 7 mars 20064 24 juin 2004 à 18:19
Merci, je vais essayer. :-)
A+
Xya
Messages postés103Date d'inscriptionlundi 8 juillet 2002StatutMembreDernière intervention24 novembre 2005 24 juin 2004 à 13:25
Sinon il y a toujours VS Converter sur The Code Project
cs_labout
Messages postés1356Date d'inscriptionsamedi 8 décembre 2001StatutMembreDernière intervention23 octobre 20068 24 juin 2004 à 08:06
c'est du vb.net 2003 mais le crois avoir vu passer un source qui dit comment modifier de 2003 en 2002 assez récemment.
@+
borntoclimb
Messages postés98Date d'inscriptionvendredi 4 janvier 2002StatutMembreDernière intervention 7 mars 20064 22 juin 2004 à 23:06
Je ne peux pas ouvrir ton project VB. Il semble que ma version de visual studio soit trop vielle?!! As tu un ServicePack sur VB.NET ou faut il le Visual Studio Complet?
Merci,
cs_labout
Messages postés1356Date d'inscriptionsamedi 8 décembre 2001StatutMembreDernière intervention23 octobre 20068 23 janv. 2004 à 20:09
Je suis d'accord avec toi. VB.NET c'est autre chose mais ce n'est pas pour les nains.
Je pense que les détracteurs n'y ont pas ou peu touché.
Au début j'avais un avis très mitigé mais maintenant que j'ai compris le principe c'est géant. Et les plus de pb d'install sauf avec crystal mais j'ai trouvé le truc.
Salut
Xya
Messages postés103Date d'inscriptionlundi 8 juillet 2002StatutMembreDernière intervention24 novembre 2005 23 janv. 2004 à 19:48
Bonne découverte de VB.NET alors :)
C'est vrai que ca prend un peu de temps de s'habituer à .NET et à la multitude de classes, mais je pense que ca vaux vraiment le coup par rapport à VB6 (même si beaucoup de programmeurs VB6 disent le contraire)
Xya
cs_labout
Messages postés1356Date d'inscriptionsamedi 8 décembre 2001StatutMembreDernière intervention23 octobre 20068 22 janv. 2004 à 18:45
Merci
je note et modifierai c'est plus simple effectivement.
J'ai encore beaucoup à apprendre sur VB.Net
Xya
Messages postés103Date d'inscriptionlundi 8 juillet 2002StatutMembreDernière intervention24 novembre 2005 22 janv. 2004 à 18:07
Pour lister récursivement les fichiers et sous dossiers d'un dossier on peut faire plus simple comme FileInfo et DirectoryInfo dérivent de FileSystemInfo:
Function ParseDir(ByVal dir As DirectoryInfo) As FileSystemInfo()
Dim items As New ArrayList
Dim di As DirectoryInfo
Try
'ajoute les fichiers du dossier dans la liste
items.AddRange(dir.GetFiles())
For Each di In dir.GetDirectories()
'ajoute chaque sous dossier
items.Add(di)
'ajoute les fichiers et sous dossiers de di
'en appellant récursivement ParseDir
items.AddRange(ParseDir(di))
Next
'convertit le contenu de la liste en FileSystemInfo()
Return DirectCast(items.ToArray(GetType(FileSystemInfo)), FileSystemInfo())
Catch ex As Exception
'si une exception est levée, on renvoie un tableau vide
Return New FileSystemInfo() {}
End Try
End Function
'Pour l'appeller:
Dim items as FileSystemInfo()
items = ParseDir(New DirectoryInfo("<dossier>"))
21 oct. 2006 à 10:36
Je vais essayer cela des que possible.
Bjark
19 oct. 2006 à 14:46
Il suffit de modifier la fonction CopyDirectory comme suit
Function CopyDirectory(ByVal mFolderSrc As String, ByVal mFolderCible As String, ByVal bStatus As Boolean) As Boolean
' Si pas de barre de progression passer le 3 ème paramètre false, sinon Trus
Dim cTab As New Collection
Dim atab() As String
Dim oRep As Object
Dim srep As String
Dim i As Integer, j As Integer, k As Integer, iPos As Integer
Dim sfichier As String
Dim sDir As String
Dim mFolderDebut As String
Dim iIncr As Integer
Dim frm As New Status
If bStatus Then
frm.Show()
End If
Try
Dim dirs As String() = Directory.GetDirectories(mFolderSrc)
Dim dir As String
Dim sSource As String
Dim sCible As String
cTab.Add(mFolderSrc)
For Each dir In dirs
cTab.Add(dir)
' Analyse des sous répertoires
AnalyseFolder(dir, cTab)
Next
' Mise en place de la copie
' création des repertoires
If InStr(mFolderSrc, "") > 0 Then
For k = 1 To Len(mFolderSrc)
If Mid(mFolderSrc, k, 1) = "" Then
iPos = k
End If
Next
mFolderDebut = Mid(mFolderSrc, 1, iPos - 1)
Else
' c'est A: par exemple
If InStr(mFolderSrc, ":") = 0 Then
MsgBox("Adresse source incorrecte", MsgBoxStyle.Exclamation)
Return False
Else
mFolderSrc = Mid(mFolderSrc, 2)
End If
End If
For i = 1 To cTab.Count
oRep = cTab.Item(i)
srep = oRep.ToString
' création des repertoires et sous repertoires
sDir = Replace(srep, mFolderDebut, mFolderCible)
If Directory.Exists(sDir) = False Then
Directory.CreateDirectory(sDir)
End If
Next
If bStatus Then
frm.ProgressBar1.Value = 0
iIncr = 100 / cTab.Count
End If
'Copie des fichiers
For i = 1 To cTab.Count
If bStatus Then
If (frm.ProgressBar1.Value + iIncr) < 100 Then
frm.ProgressBar1.Value = frm.ProgressBar1.Value + iIncr
Else
frm.ProgressBar1.Value = 100
End If
End If
oRep = cTab.Item(i)
srep = oRep.ToString
Dim aTabf As Array
aTabf = ListeFichiers(srep)
For j = 0 To UBound(aTabf)
sSource = CType((srep & Replace(aTabf(j), srep, "")), Object).ToString
sCible = CType(Replace(aTabf(j), mFolderDebut, mFolderCible), Object).ToString
File.Copy(sSource, sCible, True)
Next
Next
If bStatus Then
frm.Close()
End If
frm.Dispose()
frm = Nothing
Return True
Catch e As Exception
MsgBox("Erreur " & e.Source & " " & e.Message & vbCrLf & "La copie ne s'est pas faite ou est incomplête", MsgBoxStyle.Critical)
Return False
End Try
End Function
Puis de recompiler la dll
Bye
18 oct. 2006 à 18:11
11 oct. 2006 à 12:05
Je viens d'essayer ta dll sur un petit programme que je realise.
tout fonctionne impec mais je voudrais faire disparaitre la progressbar sur la commande myDll.CopyDirectory(x,y) ... tu peux me donner la marche a suivre ?
Merci
A+
5 févr. 2005 à 13:11
4 févr. 2005 à 20:52
par contre frm.dispose() permet de libérer la mémoire.
les variables Tab désignent des tableaux et cTab car un stableau de string c comme caractère.
@+
4 févr. 2005 à 10:57
ma remarque porte sur les noms des variables, si il y en a ou j'ai aucun probleme à comprendre ce que c'est ou quel est leur fonction, pour d'autre on ne sait pas ce qu'elle contienne ou leur role en regardant leur nom.
je pense à la variable Ctab, j'ai du aller voir la fonction annalysefolder pour un peu mieux comprendre. ce qui est un peu dommage.
Sinon il y a des parfaits exemples de fonction récursive.
encore une question. pourquoi pour ta barre de progression tu fait ;
frm.close
frm.dispose
frm=notihng?
il me semblait qu'en faisant .close on fait les 3 operations suscitées?.
24 juin 2004 à 18:19
A+
24 juin 2004 à 13:25
http://www.codeproject.com/macro/vsconvert.asp
Xya
24 juin 2004 à 08:06
@+
22 juin 2004 à 23:06
Merci,
23 janv. 2004 à 20:09
Je pense que les détracteurs n'y ont pas ou peu touché.
Au début j'avais un avis très mitigé mais maintenant que j'ai compris le principe c'est géant. Et les plus de pb d'install sauf avec crystal mais j'ai trouvé le truc.
Salut
23 janv. 2004 à 19:48
C'est vrai que ca prend un peu de temps de s'habituer à .NET et à la multitude de classes, mais je pense que ca vaux vraiment le coup par rapport à VB6 (même si beaucoup de programmeurs VB6 disent le contraire)
Xya
22 janv. 2004 à 18:45
je note et modifierai c'est plus simple effectivement.
J'ai encore beaucoup à apprendre sur VB.Net
22 janv. 2004 à 18:07
Function ParseDir(ByVal dir As DirectoryInfo) As FileSystemInfo()
Dim items As New ArrayList
Dim di As DirectoryInfo
Try
'ajoute les fichiers du dossier dans la liste
items.AddRange(dir.GetFiles())
For Each di In dir.GetDirectories()
'ajoute chaque sous dossier
items.Add(di)
'ajoute les fichiers et sous dossiers de di
'en appellant récursivement ParseDir
items.AddRange(ParseDir(di))
Next
'convertit le contenu de la liste en FileSystemInfo()
Return DirectCast(items.ToArray(GetType(FileSystemInfo)), FileSystemInfo())
Catch ex As Exception
'si une exception est levée, on renvoie un tableau vide
Return New FileSystemInfo() {}
End Try
End Function
'Pour l'appeller:
Dim items as FileSystemInfo()
items = ParseDir(New DirectoryInfo("<dossier>"))
Xya