Page 1 sur 1

[RESOLU]ParseDirectory

Publié : mar. 19/mars/2013 9:58
par omega
Re-bonjour

@ Falsam

Ton code de parcours de répertoires marche bien

Code : Tout sélectionner

Procedure.s ParseDirectory(folder.s, id.l = 0)
  
  If Right(folder, 1) <> "\"
    folder + "\"
  EndIf
  
  If ExamineDirectory(id, folder, "*.*")
    
    While NextDirectoryEntry(id)
      
      If DirectoryEntryName(id) <> "." And DirectoryEntryName(id) <> ".."
               
        Debug folder + DirectoryEntryName(id)
                
        If DirectoryEntryType(id) = #PB_DirectoryEntry_Directory
          ParseDirectory(folder + DirectoryEntryName(id), id + 1)
        EndIf
        
      EndIf
      
    Wend
    
    FinishDirectory(id)
    
  EndIf
  
EndProcedure 

ParseDirectory("c:\windows")


Seulement voilà:
1)
Pourquoi après le code ci-dessous, le debug affiche le chemin+le nom du fichier, alors
que le test élimine seulement les dossiers nommés . ou ..? (comment sais-tu qu'il s'agit forcément d'un fichier?

Code : Tout sélectionner

 If DirectoryEntryName(id) <> "." And DirectoryEntryName(id) <> ".."
    ;Ici, on ne sait pas encore s'il s'agit d'un fichier ou d'un répertoire?? 
    Debug folder + DirectoryEntryName(id); il affiche toujours le chemin+nom de fichier
2)

Je voudrais bien utiliser ta procédure pour parcourir mes répertoires, seulement je m'embrouille un peu... je suppose que je dois tester à chaque fois après ce code:

Code : Tout sélectionner

  If DirectoryEntryType(id) = #PB_DirectoryEntry_Directory
si ce répertoire existe de l'autre côté (liste fichiers ftp)
si oui, continuer, sinon créer ce répertoire (vide)

3)

Si je comprends bien, mon sendftpfile() doit figurer ici (après le débug):
Debug folder + DirectoryEntryName(id)

Si je dis n'importe quoi dis le moi...mais j'avoue que je me perds..


Merci encore

Re: @Falsam: Ton code marche bien mais....

Publié : mar. 19/mars/2013 10:02
par omega
Ehh... une petite précision:
Mes questions s'adressent à tout le monde, pas seulement à falsam...

bonne journée à tous

Re: @Falsam: Ton code marche bien mais....

Publié : mar. 19/mars/2013 10:31
par falsam
Un peu de commentaire et un peu de modification de code pour ce résultat.

Code : Tout sélectionner

Procedure.s ParseDirectory(folder.s, id.l = 0)
  
  If Right(folder, 1) <> "\"
    folder + "\"
  EndIf
  
  If ExamineDirectory(id, folder, "*.*") ;Examine un répertoire 
    
    While NextDirectoryEntry(id)
      
      If DirectoryEntryName(id) <> "." And DirectoryEntryName(id) <> ".."
        
        Select DirectoryEntryType(id)       
          ;C'est un dossier  
          Case #PB_DirectoryEntry_Directory 
            ;Tu dois créer ton dossier "DirectoryEntryName(id)" sur le serveur FTP
            ;Utilises la fonction CreateFTPDirectory()
            ;Puis Change le répertoire courant du Ftp avec la fonction SetFTPDirectory()
            Debug "Le Dossier " + folder + " contient le sous dossier "+ DirectoryEntryName(id)
            
            ;Maintenant nous allons scanner ce sous dossier 
            ;On fait un appel recursif à ParseDirectory()
            ParseDirectory(folder + DirectoryEntryName(id), id + 1) 
            
          ;C'est un fichier  
          Case #PB_DirectoryEntry_File 
            ;Tu dois transférer le fichier "DirectoryEntryName(id)" sur le serveur FTP
            ;Utilises SendFTPFile(#Ftp, Folder, DirectoryEntryName(id), #True ))
            Debug "Le dossier " + folder + "contient le fichier "+ DirectoryEntryName(id)
        EndSelect
        
      EndIf
      
    Wend
    
    FinishDirectory(id)
    
  EndIf
  
EndProcedure 

;Regardons ici ce que contient le répertoire racine de l'utilisateur Windows
ParseDirectory(GetHomeDirectory())
Je te laisse le soin d'ajouter les While ...EndWhile pour tester la fin d'un transfert FTP.

Re: @Falsam: Ton code marche bien mais....

Publié : mar. 19/mars/2013 11:32
par djes
Tu pourrais changer le nom de ton sujet...? En mettant ParseDirectory par exemple....

Re: @Falsam: Ton code marche bien mais....

Publié : mar. 19/mars/2013 12:11
par omega
Merci falsam

Oui, c'est très bien compris maintenant... j'étais en train de tester avant de lire ta réponse
au post. J'ai quelques choses à ajouter, je te ferais signe des résultats..

merci beaucoup falsam
Tu pourrais changer le nom de ton sujet...? En mettant ParseDirectory par exemple....
Oui, absolument.. mais que veux-tu.. je tiens absolument à ce que mon ftp fonctionne tout comme ftp-expert ! POURQUOI PAS??

Bon allez... bonne continuation, (je vais manger maintenant..)
Merci pour tout
a+

Re: @Falsam: Ton code marche bien mais....

Publié : mar. 19/mars/2013 13:46
par Atlante
djes a écrit :Tu pourrais changer le nom de ton sujet...? En mettant ParseDirectory par exemple....
Exactement, car là on ne sait pas de quoi tu parles.
Et si c'est pour @Falsam un MP aurait été aussi bien.
Je modifie le titre.

Cordialement,

Atlante

Re: ParseDirectory

Publié : mar. 19/mars/2013 14:44
par omega
Désolé encore une fois Atlande

Cordialement