cs_VTwin
Messages postés13Date d'inscriptionsamedi 29 juillet 2006StatutMembreDernière intervention28 décembre 2006
-
20 août 2006 à 17:55
cs_VTwin
Messages postés13Date d'inscriptionsamedi 29 juillet 2006StatutMembreDernière intervention28 décembre 2006
-
21 août 2006 à 01:25
Salut tout le monde,
Voila j'ai recupéré la procedure suivante que j'ai adapté à ma sauce. elle permet de lister tout les fichiers avec l'extension souhaitée dans un repertoire et ses sous repertoires. C'est une procedure recursive.
Pour qu'elle fonctionne, je suis obligé de l'ouvrir dans un nouveau thread, sinon elle ne marche comme il faut. En effet, si je n'ouvre pas de nouveau thead, tout les fichiers ne sont pas trouvés!
Quelq'un peut m'aider à comprendre pourquoi j'ai besoin de faire tourner cette procedure dans un nouveau thread?
Voici le code :
'dans un form :
--------------------------------------------------------------------------
Dim ThreadSearch As Threading.Thread
ThreadSearch = New Threading.Thread(AddressOf RunSearch)
ThreadSearch.Start()
RunSearch()
----------------------------------------------------------------------------------
Private Sub RunSearch()
SearchFile(XG_DriverPath, "*.inf")
End Sub
-------------------------------------------------------------------------------------
'dans un module :
Public Sub SearchFile(ByVal X_Path As String, X_FileType as String)
'considerons que X_Path est le repertoire racine ou chercher les fichiers
'considerons que X_FileType est le type de fichier recherché (ex : ".inf")
'dès que je touve un fichier, je met son chemin complet dans un tableau XG_TabFiles
Dim f As Integer
f = 0
For Each PathFile As String In IO.Directory.GetFiles(X_Path)
If InStr(PathFile, X_FileType) Then
XG_PathFile = PathFile
XG_TabFiles(XG_TabFiles.Length - 1) = PathFile
f = f + 1
ReDim Preserve XG_TabFiles(XG_TabFiles.Length)
End If
Next
For Each PathDirectory As String In IO.Directory.GetDirectories(X_Path)
cs_VTwin
Messages postés13Date d'inscriptionsamedi 29 juillet 2006StatutMembreDernière intervention28 décembre 2006 21 août 2006 à 01:25
Merci pour ta reponse White_Mage()
Je te rassure XG_TabFiles est une variable globale que j'ai declaré au prealable et que j'ai oublié de copier-coller dans le post. Toutes mes variables sont declarées
Pour le reste, merci de m'avoir ouvert les yeux, clair que le f ne sert à rien!!
Bon j'ai refait le test sans ouvrir de nouveau thread... et ca fonctionne aussi (sans rien toucher à cette fonction)
Je sais pas ce que j'ai bidouillé au debut des mes tests, j'avais du oublier quelque chose. d'ailleurs quand j'y repense je ne vois pas en quoi le fait d'ouvrir un nouveau thread peut influer sur le fonctionnement d'une procedure!!
En tout cas merci pour tes conseils et ma question initiale n'a en fait pas lieu d'etre... autant pour moi
white_mage
Messages postés47Date d'inscriptionjeudi 5 février 2004StatutMembreDernière intervention25 février 2010 20 août 2006 à 23:58
Il y a plusieurs "problèmes" dans ton code....
La gestion des tableaux est mauvaise...tu dois surement utiliser explicit = true....supprime tout de suite cela...et déclare tout. C'est surement la cause de tout tes problèmes...le compilateur t'expliquera tout.
Sinon,
...
f = f + 1 'Ecrit f += 1 (f ne te sert a rien dans ce code...mais utilise le a la place de "XG_TabFiles.Length - 1"
...
... For Each PathDirectory As String In IO.Directory.GetDirectories(X_Path)
SearchFile(PathDirectory, ".inf") ''''REM Je mettret plutôt X_FileType que ".inf"