Page 1 sur 1

Aide pour un prog de recherche de dossier sur disque

Publié : ven. 05/mai/2006 23:25
par pampers
Bonjour a tous, je débute en PB ! je progresse grace a l'exemple. je cherche un code qui me permet de chercher un dossier sur le disque et si il existe de pouvoir le supprimer ainsi que son contenu... (ce dossier peut être présent à plusieurs endroits du DD.
D'avance merci de votre aide.

Publié : sam. 06/mai/2006 1:07
par Flype
bienvenu pampers :)

pour ta demande il faut faire une procedure récursive, c'est assez facile en purebasic comme le montre le code ci dessous. Ensuite pour effacer ton dossier tu as DeleteDirectory().

Code : Tout sélectionner

Procedure FindDirectory(folder.s, filename.s, liste.s())
  
  If Right(folder,1)<>"." And Right(folder,2)<>".."
    
    dir = ExamineDirectory(#PB_Any, folder, "*.*")
    
    If dir
      While NextDirectoryEntry(dir)
        Select DirectoryEntryType(dir)
          Case #PB_DirectoryEntry_Directory
            If LCase(DirectoryEntryName(dir)) = filename
              If AddElement(liste())
                liste() = folder+"\"+DirectoryEntryName(dir)
              EndIf
            Else
              FindDirectory(folder+"\"+DirectoryEntryName(dir), filename, liste())
            EndIf
        EndSelect
      Wend
    EndIf
    
  EndIf
  
EndProcedure

NewList resultat.s()

Debug FindDirectory("c:\documents and settings", "temp", resultat())

ForEach resultat()
  Debug resultat()
  ;Debug DeleteDirectory(resultat(), "*.*", #PB_FileSystem_Recursive)
Next

Publié : sam. 06/mai/2006 15:34
par pampers
Merci beaucoup, cela ne semble effectivement pas trés difficile. Merci encore..

Problème !

Publié : sam. 06/mai/2006 21:35
par pampers
la synthaxe me paraissait claire, mais quand l'essai de l'executer, PureBasic se bloque. il renvoi une erreur dans la synthaxe de la procedure ???

Publié : dim. 07/mai/2006 12:02
par Dr. Dri
si tu utilise la démo ou la derniere version stable, tu as une version 3.94
là c'est un code prévu pour la version 4 (actuellement en beta)

Dri

Publié : dim. 07/mai/2006 20:15
par pampers
Dr. Dri a écrit :si tu utilise la démo ou la derniere version stable, tu as une version 3.94
là c'est un code prévu pour la version 4 (actuellement en beta)

Dri
j'ai la 3.94 il faut donc que je modifie le code ?si oui comment ?

Publié : dim. 07/mai/2006 20:31
par AWEAR
Voilà ce que ça donne (j'espère que il n'y a pas d'erreur)

Code : Tout sélectionner

NewList resultat.s()
Procedure FindDirectory(folder.s, filename.s) 
  
  If Right(folder,1)<>"." And Right(folder,2)<>".." 
    
    dir = ExamineDirectory(#PB_Any, folder, "*.*") 
    
    If dir 
      Repeat
      entry =  NextDirectoryEntry() 
        Select entry
          Case 2
            If LCase(DirectoryEntryName()) = filename 
              If AddElement(resultat()) 
                resultat() = folder+"\"+DirectoryEntryName() 
              EndIf 
            Else 
              FindDirectory(folder+"\"+DirectoryEntryName(), filename)
              UseDirectory(dir)
            EndIf 
        EndSelect 
Until entry = 0
    EndIf 
    
  EndIf 
  
EndProcedure  
FindDirectory("c:\documents and settings", "temp") 

ForEach resultat() 
  Debug resultat() 
  ;Debug DeleteDirectory(resultat(), "*.*", #PB_FileSystem_Recursive) 
Next  

Publié : dim. 07/mai/2006 21:43
par pampers
Merci à tous, je viens de télécharger la Beta 4. Votre réactivité donne envie de continuer. je pense que je vais pas me coucher de bonne heure !!!