DLL FILESYSTEM VB.NET

Xya Messages postés 103 Date d'inscription lundi 8 juillet 2002 Statut Membre Dernière intervention 24 novembre 2005 - 22 janv. 2004 à 18:07
cs_bjark Messages postés 2 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 21 octobre 2006 - 21 oct. 2006 à 10:36
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/19690-dll-filesystem-vb-net

cs_bjark Messages postés 2 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 21 octobre 2006
21 oct. 2006 à 10:36
Merci pour la reponse.
Je vais essayer cela des que possible.

Bjark
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
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és 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
18 oct. 2006 à 18:11
Il faut rechercher dans le projet CopyDirectory et flagger ce qui fait apparaitre la barre
cs_bjark Messages postés 2 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 21 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és 3 Date d'inscription vendredi 4 février 2005 Statut Membre Dernière intervention 25 février 2005
5 févr. 2005 à 13:11
Merci pour ce complement d'information. :)
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
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és 3 Date d'inscription vendredi 4 février 2005 Statut Membre Dernière intervention 25 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és 98 Date d'inscription vendredi 4 janvier 2002 Statut Membre Dernière intervention 7 mars 2006 4
24 juin 2004 à 18:19
Merci, je vais essayer. :-)
A+
Xya Messages postés 103 Date d'inscription lundi 8 juillet 2002 Statut Membre Dernière intervention 24 novembre 2005
24 juin 2004 à 13:25
Sinon il y a toujours VS Converter sur The Code Project

http://www.codeproject.com/macro/vsconvert.asp


Xya
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
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és 98 Date d'inscription vendredi 4 janvier 2002 Statut Membre Dernière intervention 7 mars 2006 4
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és 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
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és 103 Date d'inscription lundi 8 juillet 2002 Statut Membre Dernière intervention 24 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és 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
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és 103 Date d'inscription lundi 8 juillet 2002 Statut Membre Dernière intervention 24 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>"))

Xya
Rejoignez-nous