Page 1 sur 1

[résolu] Entrée dans un répertoire ftp

Publié : dim. 05/juil./2009 15:31
par venom
Bonjour,

voila en ce moment je m'attaque a la bibliothèque ftp sous linux bon le code est 100% compatible windows je pense :) .

le souci qui me viens c'est comment ont fait pour ouvrir un dossier sur le serveur ftp en double clic ?
j'ai déjà récupérer la fonction double-clic mais je n'arrive pas a lui dire d'ouvrir tel ou tel dossier :?

c'est surement pas difficile mais bon j'avoue que...

voici le code:

Code : Tout sélectionner

;--- Window Constants
Enumeration
  #Window_0
EndEnumeration

;--- Gadget Constants
Enumeration
  #TextGadget_0
  #StringGadget_0
  #TextGadget_1
  #StringGadget_1
  #TextGadget_2
  #StringGadget_2
  #ButtonGadget_0
  #ExplorerListGadget_0
  #ListIconGadget_0
  #ListViewGadget_0
  #Ftp
EndEnumeration
;--- initialisation
InitNetwork()

;--- ouverture de la fenetre
  If OpenWindow(#Window_0, 0, 0, 1000, 630, "VFTP",  #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
   SetWindowColor(#Window_0,  RGB(0,0,0))
;--- texte plus string 1
    TextGadget(#TextGadget_0, 10, 15, 40, 20,"Hote :")
    SetGadgetColor(#TextGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#TextGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
     StringGadget(#StringGadget_0,  60, 10, 120, 25, "")
     SetGadgetColor(#StringGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
     SetGadgetColor(#StringGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
;--- texte plus string 2
    TextGadget(#TextGadget_1, 250, 15, 80, 20,"")
    SetGadgetColor(#TextGadget_1, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#TextGadget_1, #PB_Gadget_FrontColor, RGB(255,255,255))
     StringGadget(#StringGadget_1,  340, 10, 120, 25, "")
     SetGadgetColor(#StringGadget_1, #PB_Gadget_BackColor, RGB(0,0,0))
     SetGadgetColor(#StringGadget_1, #PB_Gadget_FrontColor, RGB(255,255,255))
;--- texte plus string 3
    TextGadget(#TextGadget_2, 550, 15, 100, 20,"mot de passe :")
    SetGadgetColor(#TextGadget_2, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#TextGadget_2, #PB_Gadget_FrontColor, RGB(255,255,255))
     StringGadget(#StringGadget_2,  660, 10, 120, 25, "", #PB_String_Password)
     SetGadgetColor(#StringGadget_2, #PB_Gadget_BackColor, RGB(0,0,0))
     SetGadgetColor(#StringGadget_2, #PB_Gadget_FrontColor, RGB(255,255,255))
;--- bouton connexion
    ButtonGadget(#ButtonGadget_0, 870,  10, 120, 25, "Connexion")
;--- explorateur de fichier gauche   
    ExplorerListGadget(#ExplorerListGadget_0, 10, 50, 480, 450, GetHomeDirectory()+"*.*", #PB_Explorer_FullRowSelect|#PB_Explorer_AutoSort)
    SetGadgetColor(#ExplorerListGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#ExplorerListGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
;--- explorateur de fichier droite 
    ListIconGadget(#ListIconGadget_0, 510, 50, 480, 450, "Name",  148,#PB_ListIcon_FullRowSelect |#PB_ListIcon_AlwaysShowSelection )
     AddGadgetColumn(#ListIconGadget_0, 1, "Size", 110)
     AddGadgetColumn(#ListIconGadget_0, 2, "Type", 110)
     AddGadgetColumn(#ListIconGadget_0, 3, "Modified", 110)
    SetGadgetColor(#ListIconGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#ListIconGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
;--- ListViewGadget affiche les divers activitées
    ListViewGadget(#ListViewGadget_0, 10, 510, 980, 80)
    SetGadgetColor(#ListViewGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#ListViewGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
  EndIf

  Repeat
   EventID = WaitWindowEvent()     
    If EventID = #PB_Event_Gadget 
      Select EventGadget()

        Case #ButtonGadget_0
         ClearGadgetItems(#ListViewGadget_0)
           If OpenFTP(#Ftp, GetGadgetText(#StringGadget_0), GetGadgetText(#StringGadget_1), GetGadgetText(#StringGadget_2))
            AddGadgetItem (#ListViewGadget_0, -1," Connection réussi avec succès a : "+GetGadgetText(#StringGadget_0))
             
              If ExamineFTPDirectory(#Ftp)
               While NextFTPDirectoryEntry(#Ftp)
                 If FTPDirectoryEntryType(#Ftp) = 1
                  type$ = "fichier"
                 ElseIf FTPDirectoryEntryType(#Ftp) = 2
                  type$ = "Dossier"
                 EndIf 
                    listeftp$ = FTPDirectoryEntryName(#Ftp) +Chr(10)+ Str(FTPDirectoryEntrySize(#Ftp))+" Ko"  +Chr(10)+ type$ +Chr(10) + FormatDate("%dd/%mm/%yyyy",FTPDirectoryEntryDate(#Ftp))
                  AddGadgetItem(#ListIconGadget_0, -1, listeftp$, 0)
               Wend
             EndIf
            AddGadgetItem (#ListViewGadget_0, -1, "Il y a un total de : "+Str(CountGadgetItems(#ListIconGadget_0)-2)+ " Fichiers") 
           Else
            AddGadgetItem (#ListViewGadget_0,-1,"Impossible de se connecter à l'Hote : "+GetGadgetText(#StringGadget_0))
           EndIf
           
      EndSelect
    EndIf
    
       Select EventID
         Case #PB_Event_Gadget
           Select EventGadget()
             Case #ListIconGadget_0
               Select EventType()
                 Case #PB_EventType_LeftDoubleClick 
                   ;--- enplacement du double clic qui ouvre le dossier 
                   Debug GetGadgetItemText(#ListIconGadget_0, GetGadgetState(#ListIconGadget_0), 0)
               EndSelect
           EndSelect
       EndSelect
       
  Until EventID = #PB_Event_CloseWindow
 End 
ps: option supplémentaire est ce que quel qu'un pourrais faire un screen sous windows que je voie ce que sa donne svp ? d'avance merci




@++

Publié : dim. 05/juil./2009 18:04
par venom
c'est bon j'ai trouvé tout seul :D

la réponse etait déjà dans mon code :wink: la voici

Code : Tout sélectionner

;################################
;################################
;##### venom 05/07/2009 purebasic V 4.30 #####
;################################
;################################

;--- Window Constants
Enumeration
  #Window_0
EndEnumeration

;--- Gadget Constants
Enumeration
  #TextGadget_0
  #StringGadget_0
  #TextGadget_1
  #StringGadget_1
  #TextGadget_2
  #StringGadget_2
  #ButtonGadget_0
  #ExplorerListGadget_0
  #ListIconGadget_0
  #ListViewGadget_0
  #Ftp
EndEnumeration
;--- initialisation
InitNetwork()

;--- ouverture de la fenetre
  If OpenWindow(#Window_0, 0, 0, 1000, 630, "VFTP",  #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
   SetWindowColor(#Window_0,  RGB(0,0,0))
;--- texte plus string 1
    TextGadget(#TextGadget_0, 10, 15, 40, 20,"Hote :")
    SetGadgetColor(#TextGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#TextGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
     StringGadget(#StringGadget_0,  60, 10, 120, 25, "")
     SetGadgetColor(#StringGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
     SetGadgetColor(#StringGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
;--- texte plus string 2
    TextGadget(#TextGadget_1, 250, 15, 80, 20,"Utilisateur :")
    SetGadgetColor(#TextGadget_1, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#TextGadget_1, #PB_Gadget_FrontColor, RGB(255,255,255))
     StringGadget(#StringGadget_1,  340, 10, 120, 25, "")
     SetGadgetColor(#StringGadget_1, #PB_Gadget_BackColor, RGB(0,0,0))
     SetGadgetColor(#StringGadget_1, #PB_Gadget_FrontColor, RGB(255,255,255))
;--- texte plus string 3
    TextGadget(#TextGadget_2, 550, 15, 100, 20,"mot de passe :")
    SetGadgetColor(#TextGadget_2, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#TextGadget_2, #PB_Gadget_FrontColor, RGB(255,255,255))
     StringGadget(#StringGadget_2,  660, 10, 120, 25, "", #PB_String_Password)
     SetGadgetColor(#StringGadget_2, #PB_Gadget_BackColor, RGB(0,0,0))
     SetGadgetColor(#StringGadget_2, #PB_Gadget_FrontColor, RGB(255,255,255))
;--- bouton connexion
    ButtonGadget(#ButtonGadget_0, 870,  10, 120, 25, "Connexion")
;--- explorateur de fichier gauche   
    ExplorerListGadget(#ExplorerListGadget_0, 10, 50, 480, 450, GetHomeDirectory()+"*.*", #PB_Explorer_FullRowSelect|#PB_Explorer_AutoSort)
    SetGadgetColor(#ExplorerListGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#ExplorerListGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
;--- explorateur de fichier droite 
    ListIconGadget(#ListIconGadget_0, 510, 50, 480, 450, "Name",  148,#PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
     AddGadgetColumn(#ListIconGadget_0, 1, "Size", 110)
     AddGadgetColumn(#ListIconGadget_0, 2, "Type", 110)
     AddGadgetColumn(#ListIconGadget_0, 3, "Modified", 110)
    SetGadgetColor(#ListIconGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#ListIconGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
;--- ListViewGadget affiche les divers activitées
    ListViewGadget(#ListViewGadget_0, 10, 510, 980, 80)
    SetGadgetColor(#ListViewGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#ListViewGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
  EndIf

  Repeat
   EventID = WaitWindowEvent()     
    If EventID = #PB_Event_Gadget 
      Select EventGadget()

        Case #ButtonGadget_0
         ClearGadgetItems(#ListViewGadget_0)
           If OpenFTP(#Ftp, GetGadgetText(#StringGadget_0), GetGadgetText(#StringGadget_1), GetGadgetText(#StringGadget_2))
            AddGadgetItem (#ListViewGadget_0, -1," Connection réussi avec succès a : "+GetGadgetText(#StringGadget_0))
             
              If ExamineFTPDirectory(#Ftp)
               While NextFTPDirectoryEntry(#Ftp)
                 If FTPDirectoryEntryType(#Ftp) = 1
                  type$ = "fichier"
                 ElseIf FTPDirectoryEntryType(#Ftp) = 2
                  type$ = "Dossier"
                 EndIf 
                    listeftp$ = FTPDirectoryEntryName(#Ftp) +Chr(10)+ Str(FTPDirectoryEntrySize(#Ftp))+" Ko"  +Chr(10)+ type$ +Chr(10) + FormatDate("%dd/%mm/%yyyy",FTPDirectoryEntryDate(#Ftp))
                  AddGadgetItem(#ListIconGadget_0, -1, listeftp$, 0)
               Wend
             EndIf
            AddGadgetItem (#ListViewGadget_0, -1, "Il y a un total de : "+Str(CountGadgetItems(#ListIconGadget_0)-2)+ " Fichiers") 
           Else
            AddGadgetItem (#ListViewGadget_0,-1,"Impossible de se connecter à l'Hote : "+GetGadgetText(#StringGadget_0))
           EndIf
           
      EndSelect
    EndIf
    
       Select EventID
         Case #PB_Event_Gadget
           Select EventGadget()
             Case #ListIconGadget_0
               Select EventType()
                 Case #PB_EventType_LeftDoubleClick 
                   ;--- enplacement du double clic qui ouvre le dossier 
                   Repertoire$ = GetGadgetItemText(#ListIconGadget_0, GetGadgetState(#ListIconGadget_0), 0)
                    SetFTPDirectory(#Ftp, Repertoire$)
                     ClearGadgetItems(#ListIconGadget_0)
                       If ExamineFTPDirectory(#Ftp)
                        While NextFTPDirectoryEntry(#Ftp)
                         If FTPDirectoryEntryType(#Ftp) = 1
                           type$ = "fichier"
                         ElseIf FTPDirectoryEntryType(#Ftp) = 2
                          type$ = "Dossier"
                         EndIf 
                           listeftp$ = FTPDirectoryEntryName(#Ftp) +Chr(10)+ Str(FTPDirectoryEntrySize(#Ftp))+" Ko"  +Chr(10)+ type$ +Chr(10) + FormatDate("%dd/%mm/%yyyy",FTPDirectoryEntryDate(#Ftp))
                            AddGadgetItem(#ListIconGadget_0, -1, listeftp$, 0)
                             ClearGadgetItems(#ListViewGadget_0)
                              AddGadgetItem (#ListViewGadget_0, -1, "Il y a un total de : "+Str(CountGadgetItems(#ListIconGadget_0)-2)+ " Fichiers") 
                       Wend
                     EndIf
             
               EndSelect
           EndSelect
       EndSelect
       
  Until EventID = #PB_Event_CloseWindow
 End 
par contre il y a une chose bizarre j'ai toujours un fichier qui s'appel " . " dans chaque répertoire :?

quel qu'un serai pourquoi ?




@++

Publié : dim. 05/juil./2009 23:54
par Geo Trouvpatou
Salut.

Voici un petit bout de code que j'avais déjà filé :

Code : Tout sélectionner

; Geo Trouvpatou 25/02/2009
; Lister Dossiers et Fichiers de son FTP et les trier de A-Z
; OS : Window - Linux 

Structure FichierDossierFTP
    Nom$
    Taille.l
EndStructure

NewList NomFichier.FichierDossierFTP()
NewList NomDossier.FichierDossierFTP()


InitNetwork()
If OpenFTP(0, "ftpperso.free.fr", "LOGIN", "MDP") ;------------- A REMPLIR
    
    ; DOSSIERS
    If ExamineFTPDirectory(0)
        
        While NextFTPDirectoryEntry(0)
            
            If FTPDirectoryEntryType(0) = 2
                If FTPDirectoryEntryName(0) <> "." ; Tout se passe ici pour ton problème
                    Debug "Dossier :" + FTPDirectoryEntryName(0)
                    ;Debug FTPDirectoryEntryType(0)
                    AddElement(NomDossier())
                    NomDossier()\Nom$ = FTPDirectoryEntryName(0)
                EndIf
            EndIf
            
        Wend
        
    EndIf  
    
    ; FICHIERS
    If ExamineFTPDirectory(0)
        
        While NextFTPDirectoryEntry(0)
            
            If FTPDirectoryEntryType(0) = 1
                Debug "Fichier :" + FTPDirectoryEntryName(0)
                Debug FTPDirectoryEntrySize(0)
                ;Debug FTPDirectoryEntryType(0)
                AddElement(NomFichier())
                NomFichier()\Nom$ = FTPDirectoryEntryName(0)
                NomFichier()\Taille = FTPDirectoryEntrySize(0)
            EndIf
            
        Wend
        
    EndIf  
    
    
    Debug "----------"
    Debug "---------- TRIéS"
    Debug "----------"
    
    SortStructuredList(NomDossier(), #PB_Sort_Ascending, OffsetOf(FichierDossierFTP\Nom$), #PB_Sort_String)
    
    ForEach NomDossier()
        Debug "Dossier : " + NomDossier()\Nom$ 
    Next 
    
    
    SortStructuredList(NomFichier(), #PB_Sort_Ascending, OffsetOf(FichierDossierFTP\Nom$), #PB_Sort_String)
    
    ForEach NomFichier()
        Debug "Fichier : " + NomFichier()\Nom$ + " ----- Taille : " + Str(NomFichier()\Taille) 
    Next    
    
    CloseFTP(0)
    
Else
    MessageRequester("Avertissement", "Connexion impossible")
EndIf
et dans un programme plus complet voici comment je fait pour mettre une icone devant chaque noms de fichier :

Code : Tout sélectionner

SortStructuredList(NomFichier(), #PB_Sort_Ascending, OffsetOf(FichierDossierFTP\Nom$), #PB_Sort_String)
                        
ForEach NomFichier()
  If LoadImage(0, "CdPlayer.bmp")     ; changez le chemin/fichier contenant votre image 32x32 pixel
    AddGadgetItem(#ListIcon_explorateur__ET, -1, NomFichier()\Nom$ + Chr(10) + Str(NomFichier()\Taille), ImageID(0))
  EndIf  
Next
Pour bien faire il faudrait récupérer l'extension de chaque fichiers et mettre l'image adéquate.


./ C'est le dossier courant
../ C'est le dossier parent

./index.html c'est pareil que index.html
../index.html là tu remontes d'un dossier

Bon courage pour ton VenomZilla :lol:

Bye.

Publié : lun. 06/juil./2009 3:06
par venom
Merci pour tes codes je testerai sa ce soir.

Pour le :/ je savez mais c'est l'autre qui me gène un peut. Bref

Je vous tiens au jus, le drag and drop ne devrez plus tarder a pointer son nez :wink:






@++

Publié : mar. 07/juil./2009 6:11
par venom
petite mise a jours, ajout du glisser déposé du serveur vers le client ( de gauche a droite ) :D
ainsi que du client vers le serveur ( de droite a gauche ) :D

Code : Tout sélectionner

;################################
;############# VFTP ###############
;##### venom 05/07/2009 purebasic V 4.30 #####
;################################
;################################

;--- Window Constants
Enumeration
  #Window_0
EndEnumeration

;--- Gadget Constants
Enumeration
  #TextGadget_0
  #StringGadget_0
  #TextGadget_1
  #StringGadget_1
  #TextGadget_2
  #StringGadget_2
  #ButtonGadget_0
  #ExplorerListGadget_0
  #ListIconGadget_0
  #ListViewGadget_0
  #Ftp
  #ProgressBarGadget_0
EndEnumeration
;--- initialisation
InitNetwork()

;--- ouverture de la fenetre
  If OpenWindow(#Window_0, 0, 0, 1000, 630, "VFTP",  #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
   SetWindowColor(#Window_0,  RGB(0,0,0))
;--- texte plus string 1
    TextGadget(#TextGadget_0, 10, 15, 40, 20,"Hote :")
    SetGadgetColor(#TextGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#TextGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
     StringGadget(#StringGadget_0,  60, 10, 120, 25, "")
     SetGadgetColor(#StringGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
     SetGadgetColor(#StringGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
;--- texte plus string 2
    TextGadget(#TextGadget_1, 250, 15, 80, 20,"Utilisateur :")
    SetGadgetColor(#TextGadget_1, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#TextGadget_1, #PB_Gadget_FrontColor, RGB(255,255,255))
     StringGadget(#StringGadget_1,  340, 10, 120, 25, "")
     SetGadgetColor(#StringGadget_1, #PB_Gadget_BackColor, RGB(0,0,0))
     SetGadgetColor(#StringGadget_1, #PB_Gadget_FrontColor, RGB(255,255,255))
;--- texte plus string 3
    TextGadget(#TextGadget_2, 550, 15, 100, 20,"mot de passe :")
    SetGadgetColor(#TextGadget_2, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#TextGadget_2, #PB_Gadget_FrontColor, RGB(255,255,255))
     StringGadget(#StringGadget_2,  660, 10, 120, 25, "", #PB_String_Password)
     SetGadgetColor(#StringGadget_2, #PB_Gadget_BackColor, RGB(0,0,0))
     SetGadgetColor(#StringGadget_2, #PB_Gadget_FrontColor, RGB(255,255,255))
;--- bouton connexion
    ButtonGadget(#ButtonGadget_0, 870,  10, 120, 25, "Connexion")
;--- explorateur de fichier gauche   
    ExplorerListGadget(#ExplorerListGadget_0, 10, 50, 480, 450, GetHomeDirectory()+"*.*", #PB_Explorer_FullRowSelect|#PB_Explorer_AutoSort)
    SetGadgetColor(#ExplorerListGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#ExplorerListGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
;--- explorateur de fichier droite 
    ListIconGadget(#ListIconGadget_0, 510, 50, 480, 450, "Name",  148,#PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
     AddGadgetColumn(#ListIconGadget_0, 1, "Size", 110)
     AddGadgetColumn(#ListIconGadget_0, 2, "Type", 110)
     AddGadgetColumn(#ListIconGadget_0, 3, "Modified", 110)
    SetGadgetColor(#ListIconGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#ListIconGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
;--- ListViewGadget affiche les divers activitées
    ListViewGadget(#ListViewGadget_0, 10, 510, 980, 80)
    SetGadgetColor(#ListViewGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#ListViewGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
;---  Barre de progression
     ProgressBarGadget(#ProgressBarGadget_0,  10, 600, 980,  15, 0, 100)
     SetGadgetColor(#ProgressBarGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
     SetGadgetColor(#ProgressBarGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
  EndIf

  Repeat
   EventID = WaitWindowEvent()     
    If EventID = #PB_Event_Gadget 
      Select EventGadget()
;--- connexion a userveur ftp
        Case #ButtonGadget_0
         ClearGadgetItems(#ListViewGadget_0)
         ClearGadgetItems(#ListIconGadget_0)
           If OpenFTP(#Ftp, GetGadgetText(#StringGadget_0), GetGadgetText(#StringGadget_1), GetGadgetText(#StringGadget_2))
            AddGadgetItem (#ListViewGadget_0, -1," Connection réussi avec succès a : "+GetGadgetText(#StringGadget_0))
;--- examin des dossiers et fichiers sur le serveur ftp         
              If ExamineFTPDirectory(#Ftp)
               While NextFTPDirectoryEntry(#Ftp)
                 If FTPDirectoryEntryType(#Ftp) = 1
                  type$ = "fichier"
                 ElseIf FTPDirectoryEntryType(#Ftp) = 2
                  type$ = "Dossier"
                 EndIf 
                    listeftp$ = FTPDirectoryEntryName(#Ftp) +Chr(10)+ Str(FTPDirectoryEntrySize(#Ftp))+" Ko"  +Chr(10)+ type$ +Chr(10) + FormatDate("%dd/%mm/%yyyy",FTPDirectoryEntryDate(#Ftp))
                  AddGadgetItem(#ListIconGadget_0, -1, listeftp$, 0)
               Wend
             EndIf
            AddGadgetItem (#ListViewGadget_0, -1, "Il y a un total de : "+Str(CountGadgetItems(#ListIconGadget_0)-2)+ " Fichiers") 
           Else
            AddGadgetItem (#ListViewGadget_0,-1,"Impossible de se connecter à l'Hote : "+GetGadgetText(#StringGadget_0))
           EndIf
           
      EndSelect
    EndIf
;--- doubleclic ouvre le dossier sur le serveur ftp 
       Select EventID
         Case #PB_Event_Gadget
           Select EventGadget()
             Case #ListIconGadget_0
               Select EventType()
                 Case #PB_EventType_LeftDoubleClick 
                   Repertoire$ = GetGadgetItemText(#ListIconGadget_0, GetGadgetState(#ListIconGadget_0), 0)
                    SetFTPDirectory(#Ftp, Repertoire$)
                     ClearGadgetItems(#ListIconGadget_0)
                       If ExamineFTPDirectory(#Ftp)
                        While NextFTPDirectoryEntry(#Ftp)
                         If FTPDirectoryEntryType(#Ftp) = 1
                           type$ = "fichier"
                         ElseIf FTPDirectoryEntryType(#Ftp) = 2
                          type$ = "Dossier"
                         EndIf 
                           listeftp$ = FTPDirectoryEntryName(#Ftp) +Chr(10)+ Str(FTPDirectoryEntrySize(#Ftp))+" Ko"  +Chr(10)+ type$ +Chr(10) + FormatDate("%dd/%mm/%yyyy",FTPDirectoryEntryDate(#Ftp))
                            AddGadgetItem(#ListIconGadget_0, -1, listeftp$, 0)
                             ClearGadgetItems(#ListViewGadget_0)
                              AddGadgetItem (#ListViewGadget_0, -1, "Il y a un total de : "+Str(CountGadgetItems(#ListIconGadget_0)-2)+ " Fichiers") 
                       Wend
                     EndIf
             
               EndSelect
           EndSelect
;--- active le drag and drop pour envoyé du serveur ftp vers le client
        Select EventID
         Case #PB_Event_Gadget
           Select EventGadget()
             Case #ListIconGadget_0
               Select EventType()
                 Case #PB_EventType_DragStart
                   Repertoire$ = GetGadgetItemText(#ListIconGadget_0, GetGadgetState(#ListIconGadget_0), 0)
                      ReceiveFTPFile(#Ftp, Repertoire$ , GetGadgetText(#ExplorerListGadget_0)+GetGadgetItemText(#ListIconGadget_0, GetGadgetState(#ListIconGadget_0), 0) , 0)
                         ClearGadgetItems(#ListViewGadget_0)
                         AddGadgetItem (#ListViewGadget_0, -1, "Envoie terminé avec succées") 
                          SetGadgetText(#ExplorerListGadget_0,  GetGadgetText(#ExplorerListGadget_0))

               EndSelect
           EndSelect
          EndSelect 
          
;--- active le drag and drop pour envoyé du client ftp vers le serveur
        Select EventID
         Case #PB_Event_Gadget
           Select EventGadget()
             Case #ExplorerListGadget_0
               Select EventType()
                 Case #PB_EventType_DragStart
                   Repertoire$ = GetGadgetText(#ExplorerListGadget_0)+GetGadgetItemText(#ExplorerListGadget_0, GetGadgetState(#ExplorerListGadget_0))
                      SendFTPFile(#Ftp, Repertoire$ , GetFTPDirectory(#Ftp)+GetGadgetItemText(#ExplorerListGadget_0, GetGadgetState(#ExplorerListGadget_0)) , 0)
                        ClearGadgetItems(#ListViewGadget_0)
                         ClearGadgetItems(#ListIconGadget_0)
                           
              If ExamineFTPDirectory(#Ftp)
               While NextFTPDirectoryEntry(#Ftp)
                 If FTPDirectoryEntryType(#Ftp) = 1
                  type$ = "fichier"
                 ElseIf FTPDirectoryEntryType(#Ftp) = 2
                  type$ = "Dossier"
                 EndIf 
                    listeftp$ = FTPDirectoryEntryName(#Ftp) +Chr(10)+ Str(FTPDirectoryEntrySize(#Ftp))+" Ko"  +Chr(10)+ type$ +Chr(10) + FormatDate("%dd/%mm/%yyyy",FTPDirectoryEntryDate(#Ftp))
                  AddGadgetItem(#ListIconGadget_0, -1, listeftp$, 0)
               Wend
             EndIf
              AddGadgetItem (#ListViewGadget_0, -1, "Envoie terminé avec succées") 
               AddGadgetItem (#ListViewGadget_0, -1, "Il y a un total de : "+Str(CountGadgetItems(#ListIconGadget_0)-2)+ " Fichiers") 
                        
               EndSelect
           EndSelect
          EndSelect 
          
       EndSelect
       
  Until EventID = #PB_Event_CloseWindow
 End 
If FTPDirectoryEntryName(0) <> "."
merci Geo Trouvpatou mais cette fonction je ne peut l'appliquer dans mon code regarde la façon que j'ai fait





@++

Publié : mer. 08/juil./2009 0:04
par Geo Trouvpatou
Voici la solution.
J'ai testé en allant dans un dossier, un sous-dossier etc et cela fonctionne bien.

Où j'ai mis le code modifié, j'ai sauté 3 lignes avant et après.
Tu remarqueras que c'est du code répétitif, donc cela serait mieux de créer une procédure.
J'ai mis le code à 3 reprises.

Code : Tout sélectionner

;################################
;############# VFTP ###############
;##### venom 05/07/2009 purebasic V 4.30 #####
;################################
;################################

;--- Window Constants
Enumeration
	#Window_0
EndEnumeration

;--- Gadget Constants
Enumeration
	#TextGadget_0
	#StringGadget_0
	#TextGadget_1
	#StringGadget_1
	#TextGadget_2
	#StringGadget_2
	#ButtonGadget_0
	#ExplorerListGadget_0
	#ListIconGadget_0
	#ListViewGadget_0
	#Ftp
	#ProgressBarGadget_0
EndEnumeration
;--- initialisation
InitNetwork()

;--- ouverture de la fenetre
If OpenWindow(#Window_0, 0, 0, 1000, 630, "VFTP",  #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
    SetWindowColor(#Window_0,  RGB(0,0,0))
    ;--- texte plus string 1
    TextGadget(#TextGadget_0, 10, 15, 40, 20,"Hote :")
    SetGadgetColor(#TextGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#TextGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
    StringGadget(#StringGadget_0,  60, 10, 120, 25, "")
    SetGadgetColor(#StringGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#StringGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
    ;--- texte plus string 2
    TextGadget(#TextGadget_1, 250, 15, 80, 20,"Utilisateur :")
    SetGadgetColor(#TextGadget_1, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#TextGadget_1, #PB_Gadget_FrontColor, RGB(255,255,255))
    StringGadget(#StringGadget_1,  340, 10, 120, 25, "")
    SetGadgetColor(#StringGadget_1, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#StringGadget_1, #PB_Gadget_FrontColor, RGB(255,255,255))
    ;--- texte plus string 3
    TextGadget(#TextGadget_2, 550, 15, 100, 20,"mot de passe :")
    SetGadgetColor(#TextGadget_2, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#TextGadget_2, #PB_Gadget_FrontColor, RGB(255,255,255))
    StringGadget(#StringGadget_2,  660, 10, 120, 25, "", #PB_String_Password)
    SetGadgetColor(#StringGadget_2, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#StringGadget_2, #PB_Gadget_FrontColor, RGB(255,255,255))
    ;--- bouton connexion
    ButtonGadget(#ButtonGadget_0, 870,  10, 120, 25, "Connexion")
    ;--- explorateur de fichier gauche   
    ExplorerListGadget(#ExplorerListGadget_0, 10, 50, 480, 450, GetHomeDirectory()+"*.*", #PB_Explorer_FullRowSelect|#PB_Explorer_AutoSort)
    SetGadgetColor(#ExplorerListGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#ExplorerListGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
    ;--- explorateur de fichier droite 
    ListIconGadget(#ListIconGadget_0, 510, 50, 480, 450, "Name",  148,#PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
    AddGadgetColumn(#ListIconGadget_0, 1, "Size", 110)
    AddGadgetColumn(#ListIconGadget_0, 2, "Type", 110)
    AddGadgetColumn(#ListIconGadget_0, 3, "Modified", 110)
    SetGadgetColor(#ListIconGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#ListIconGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
    ;--- ListViewGadget affiche les divers activitées
    ListViewGadget(#ListViewGadget_0, 10, 510, 980, 80)
    SetGadgetColor(#ListViewGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#ListViewGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
    ;---  Barre de progression
    ProgressBarGadget(#ProgressBarGadget_0,  10, 600, 980,  15, 0, 100)
    SetGadgetColor(#ProgressBarGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#ProgressBarGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
EndIf

Repeat
    EventID = WaitWindowEvent()     
    If EventID = #PB_Event_Gadget 
        Select EventGadget()
                ;--- connexion a userveur ftp
            Case #ButtonGadget_0
                ClearGadgetItems(#ListViewGadget_0)
                ClearGadgetItems(#ListIconGadget_0)
                If OpenFTP(#Ftp, GetGadgetText(#StringGadget_0), GetGadgetText(#StringGadget_1), GetGadgetText(#StringGadget_2))
                    AddGadgetItem (#ListViewGadget_0, -1," Connection réussi avec succès a : "+GetGadgetText(#StringGadget_0))
                    ;--- examin des dossiers et fichiers sur le serveur ftp         
                    If ExamineFTPDirectory(#Ftp)
                        While NextFTPDirectoryEntry(#Ftp)
                            If FTPDirectoryEntryType(#Ftp) = 1
                                Type$ = "fichier"
                            ElseIf FTPDirectoryEntryType(#Ftp) = 2
                                Type$ = "Dossier"
                                
                            EndIf 
                            
                            
                            
                            If FTPDirectoryEntryName(#Ftp) <> "." ;- LE PROBLEME RESOLU
                                listeftp$ = FTPDirectoryEntryName(#Ftp) +Chr(10)+ Str(FTPDirectoryEntrySize(#Ftp))+" Ko"  +Chr(10)+ Type$ +Chr(10) + FormatDate("%dd/%mm/%yyyy",FTPDirectoryEntryDate(#Ftp))
                                AddGadgetItem(#ListIconGadget_0, -1, listeftp$, 0)
                            EndIf 
                            
                            
                            
                        Wend
                    EndIf
                    AddGadgetItem (#ListViewGadget_0, -1, "Il y a un total de : "+Str(CountGadgetItems(#ListIconGadget_0) - 1)+ " Fichiers") ;- Code modifié 
                Else
                    AddGadgetItem (#ListViewGadget_0,-1,"Impossible de se connecter à l'Hote : "+GetGadgetText(#StringGadget_0))
                EndIf
                
        EndSelect
    EndIf
    ;--- doubleclic ouvre le dossier sur le serveur ftp 
    Select EventID
        Case #PB_Event_Gadget
            Select EventGadget()
                Case #ListIconGadget_0
                    Select EventType()
                        Case #PB_EventType_LeftDoubleClick 
                            Repertoire$ = GetGadgetItemText(#ListIconGadget_0, GetGadgetState(#ListIconGadget_0), 0)
                            SetFTPDirectory(#Ftp, Repertoire$)
                            ClearGadgetItems(#ListIconGadget_0)
                            If ExamineFTPDirectory(#Ftp)
                                While NextFTPDirectoryEntry(#Ftp)
                                    If FTPDirectoryEntryType(#Ftp) = 1
                                        Type$ = "fichier"
                                    ElseIf FTPDirectoryEntryType(#Ftp) = 2
                                        Type$ = "Dossier"
                                    EndIf 
                                    
                                    
                                    
                                    If FTPDirectoryEntryName(#Ftp) <> "." ;- LE PROBLEME RESOLU
                                        listeftp$ = FTPDirectoryEntryName(#Ftp) +Chr(10)+ Str(FTPDirectoryEntrySize(#Ftp))+" Ko"  +Chr(10)+ Type$ +Chr(10) + FormatDate("%dd/%mm/%yyyy",FTPDirectoryEntryDate(#Ftp))
                                        AddGadgetItem(#ListIconGadget_0, -1, listeftp$, 0)
                                    EndIf
                                    
                                    
                                    
                                    ClearGadgetItems(#ListViewGadget_0)
                                    AddGadgetItem (#ListViewGadget_0, -1, "Il y a un total de : "+Str(CountGadgetItems(#ListIconGadget_0) - 1)+ " Fichiers") ;- Code modifié 
                                Wend
                            EndIf
							
                    EndSelect
            EndSelect
            ;--- active le drag and drop pour envoyé du serveur ftp vers le client
            Select EventID
                Case #PB_Event_Gadget
                    Select EventGadget()
                        Case #ListIconGadget_0
                            Select EventType()
                                Case #PB_EventType_DragStart
                                    Repertoire$ = GetGadgetItemText(#ListIconGadget_0, GetGadgetState(#ListIconGadget_0), 0)
                                    ReceiveFTPFile(#Ftp, Repertoire$ , GetGadgetText(#ExplorerListGadget_0)+GetGadgetItemText(#ListIconGadget_0, GetGadgetState(#ListIconGadget_0), 0) , 0)
                                    ClearGadgetItems(#ListViewGadget_0)
                                    AddGadgetItem (#ListViewGadget_0, -1, "Envoie terminé avec succées") 
                                    SetGadgetText(#ExplorerListGadget_0,  GetGadgetText(#ExplorerListGadget_0))
                                    
                            EndSelect
                    EndSelect
            EndSelect 
            
            ;--- active le drag and drop pour envoyé du client ftp vers le serveur
            Select EventID
                Case #PB_Event_Gadget
                    Select EventGadget()
                        Case #ExplorerListGadget_0
                            Select EventType()
                                Case #PB_EventType_DragStart
                                    Repertoire$ = GetGadgetText(#ExplorerListGadget_0)+GetGadgetItemText(#ExplorerListGadget_0, GetGadgetState(#ExplorerListGadget_0))
                                    SendFTPFile(#Ftp, Repertoire$ , GetFTPDirectory(#Ftp)+GetGadgetItemText(#ExplorerListGadget_0, GetGadgetState(#ExplorerListGadget_0)) , 0)
                                    ClearGadgetItems(#ListViewGadget_0)
                                    ClearGadgetItems(#ListIconGadget_0)
                                    
                                    If ExamineFTPDirectory(#Ftp)
                                        While NextFTPDirectoryEntry(#Ftp)
                                            If FTPDirectoryEntryType(#Ftp) = 1
                                                Type$ = "fichier"
                                            ElseIf FTPDirectoryEntryType(#Ftp) = 2
                                                Type$ = "Dossier"
                                            EndIf 
                                            
                                            
                                            
                                            If FTPDirectoryEntryName(#Ftp) <> "." ;- LE PROBLEME RESOLU
                                                listeftp$ = FTPDirectoryEntryName(#Ftp) +Chr(10)+ Str(FTPDirectoryEntrySize(#Ftp))+" Ko"  +Chr(10)+ Type$ +Chr(10) + FormatDate("%dd/%mm/%yyyy",FTPDirectoryEntryDate(#Ftp))
                                                AddGadgetItem(#ListIconGadget_0, -1, listeftp$, 0)
                                            EndIf
                                            
                                            
                                            
                                        Wend
                                    EndIf
                                    AddGadgetItem (#ListViewGadget_0, -1, "Envoie terminé avec succées") 
                                    AddGadgetItem (#ListViewGadget_0, -1, "Il y a un total de : "+Str(CountGadgetItems(#ListIconGadget_0) - 1)+ " Fichiers") ;- Code modifié
                                    
                            EndSelect
                    EndSelect
            EndSelect 
            
    EndSelect
    
Until EventID = #PB_Event_CloseWindow
End
Au fait je n'ai testé que sous windows.
[EDIT]Je viens de tester aussi sous Linux.

Il faudra que tu gères le timeout (Pas difficile à faire)
La selection Multi-fichiers (Humm!! me demande si y'a pas un bug avec ça :roll:)

Bonne continuation.

[EDIT 1]Rectif pour la calcul du nombre des dossiers/fichiers dans un répertoire qui, du coup avec mon code n'était plus bon.
J'ai ajouté à 3 endroits : "Code modifié"

Tu pourrais améliorer le code de façon à ne pas afficher de détails (Dossier, poid etc.) pour le dossier parent ".." comme le font les clients FTP (Enfin FileZilla).

[EDIT 2]En ce qui concerne le code répétitif c'est :
celui-ci à 2 reprises

Code : Tout sélectionner

If ExamineFTPDirectory(#Ftp) 
    While NextFTPDirectoryEntry(#Ftp) 
        If FTPDirectoryEntryType(#Ftp) = 1 
            Type$ = "fichier" 
        ElseIf FTPDirectoryEntryType(#Ftp) = 2 
            Type$ = "Dossier" 
        EndIf  
    
        If FTPDirectoryEntryName(#Ftp) <> "." ;- LE PROBLEME RESOLU 
            listeftp$ = FTPDirectoryEntryName(#Ftp) +Chr(10)+ Str(FTPDirectoryEntrySize(#Ftp))+" Ko"  +Chr(10)+ Type$ +Chr(10) + FormatDate("%dd/%mm/%yyyy",FTPDirectoryEntryDate(#Ftp)) 
            AddGadgetItem(#ListIconGadget_0, -1, listeftp$, 0) 
        EndIf 

    Wend 
EndIf 
Et celui-ci :

Code : Tout sélectionner

If ExamineFTPDirectory(#Ftp) 
    While NextFTPDirectoryEntry(#Ftp) 
        If FTPDirectoryEntryType(#Ftp) = 1 
            Type$ = "fichier" 
        ElseIf FTPDirectoryEntryType(#Ftp) = 2 
            Type$ = "Dossier" 
        EndIf  
        
        If FTPDirectoryEntryName(#Ftp) <> "." ;- LE PROBLEME RESOLU 
            listeftp$ = FTPDirectoryEntryName(#Ftp) +Chr(10)+ Str(FTPDirectoryEntrySize(#Ftp))+" Ko"  +Chr(10)+ Type$ +Chr(10) + FormatDate("%dd/%mm/%yyyy",FTPDirectoryEntryDate(#Ftp)) 
            AddGadgetItem(#ListIconGadget_0, -1, listeftp$, 0) 
        EndIf 
        

        ClearGadgetItems(#ListViewGadget_0) 
        AddGadgetItem (#ListViewGadget_0, -1, "Il y a un total de : "+Str(CountGadgetItems(#ListIconGadget_0) - 1)+ " Fichiers") ;- Code modifié  
    Wend 
EndIf 
Donc rien n'empêche une procédure comme celle-ci :

Code : Tout sélectionner

Procedure scanFichiersDossiers(option.i = 0)
    If ExamineFTPDirectory(#Ftp) 
        While NextFTPDirectoryEntry(#Ftp) 
            If FTPDirectoryEntryType(#Ftp) = 1 
                Type$ = "fichier" 
            ElseIf FTPDirectoryEntryType(#Ftp) = 2 
                Type$ = "Dossier" 
            EndIf  
            
            
            If FTPDirectoryEntryName(#Ftp) <> "." ;- LE PROBLEME RESOLU 
                listeftp$ = FTPDirectoryEntryName(#Ftp) +Chr(10)+ Str(FTPDirectoryEntrySize(#Ftp))+" Ko"  +Chr(10)+ Type$ +Chr(10) + FormatDate("%dd/%mm/%yyyy",FTPDirectoryEntryDate(#Ftp)) 
                AddGadgetItem(#ListIconGadget_0, -1, listeftp$, 0) 
            EndIf 
            
            
            If option = 1
                ClearGadgetItems(#ListViewGadget_0) 
                AddGadgetItem (#ListViewGadget_0, -1, "Il y a un total de : "+Str(CountGadgetItems(#ListIconGadget_0) - 1)+ " Fichiers") ;- Code modifié  
            EndIf
        Wend 
    EndIf 
EndProcedure

Le code au final.
Avec EnableExplicit qu'il est préférable d'utiliser.

Code : Tout sélectionner

;################################
;############# VFTP ###############
;##### venom 05/07/2009 purebasic V 4.30 #####
;################################
;################################
EnableExplicit
Global EventID.i, Type$, listeftp$, Repertoire$

Declare scanFichiersDossiers(option.i = 0)

;--- Window Constants
Enumeration
	#Window_0
EndEnumeration

;--- Gadget Constants
Enumeration
	#TextGadget_0
	#StringGadget_0
	#TextGadget_1
	#StringGadget_1
	#TextGadget_2
	#StringGadget_2
	#ButtonGadget_0
	#ExplorerListGadget_0
	#ListIconGadget_0
	#ListViewGadget_0
	#Ftp
	#ProgressBarGadget_0
EndEnumeration
;--- initialisation
InitNetwork()

;--- ouverture de la fenetre
If OpenWindow(#Window_0, 0, 0, 1000, 630, "VFTP",  #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
    SetWindowColor(#Window_0,  RGB(0,0,0))
    ;--- texte plus string 1
    TextGadget(#TextGadget_0, 10, 15, 40, 20,"Hote :")
    SetGadgetColor(#TextGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#TextGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
    StringGadget(#StringGadget_0,  60, 10, 120, 25, "")
    SetGadgetColor(#StringGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#StringGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
    ;--- texte plus string 2
    TextGadget(#TextGadget_1, 250, 15, 80, 20,"Utilisateur :")
    SetGadgetColor(#TextGadget_1, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#TextGadget_1, #PB_Gadget_FrontColor, RGB(255,255,255))
    StringGadget(#StringGadget_1,  340, 10, 120, 25, "")
    SetGadgetColor(#StringGadget_1, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#StringGadget_1, #PB_Gadget_FrontColor, RGB(255,255,255))
    ;--- texte plus string 3
    TextGadget(#TextGadget_2, 550, 15, 100, 20,"mot de passe :")
    SetGadgetColor(#TextGadget_2, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#TextGadget_2, #PB_Gadget_FrontColor, RGB(255,255,255))
    StringGadget(#StringGadget_2,  660, 10, 120, 25, "", #PB_String_Password)
    SetGadgetColor(#StringGadget_2, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#StringGadget_2, #PB_Gadget_FrontColor, RGB(255,255,255))
    ;--- bouton connexion
    ButtonGadget(#ButtonGadget_0, 870,  10, 120, 25, "Connexion")
    ;--- explorateur de fichier gauche   
    ExplorerListGadget(#ExplorerListGadget_0, 10, 50, 480, 450, GetHomeDirectory()+"*.*", #PB_Explorer_FullRowSelect|#PB_Explorer_AutoSort)
    SetGadgetColor(#ExplorerListGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#ExplorerListGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
    ;--- explorateur de fichier droite 
    ListIconGadget(#ListIconGadget_0, 510, 50, 480, 450, "Name",  148,#PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
    AddGadgetColumn(#ListIconGadget_0, 1, "Size", 110)
    AddGadgetColumn(#ListIconGadget_0, 2, "Type", 110)
    AddGadgetColumn(#ListIconGadget_0, 3, "Modified", 110)
    SetGadgetColor(#ListIconGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#ListIconGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
    ;--- ListViewGadget affiche les divers activitées
    ListViewGadget(#ListViewGadget_0, 10, 510, 980, 80)
    SetGadgetColor(#ListViewGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#ListViewGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
    ;---  Barre de progression
    ProgressBarGadget(#ProgressBarGadget_0,  10, 600, 980,  15, 0, 100)
    SetGadgetColor(#ProgressBarGadget_0, #PB_Gadget_BackColor, RGB(0,0,0))
    SetGadgetColor(#ProgressBarGadget_0, #PB_Gadget_FrontColor, RGB(255,255,255))
EndIf

Repeat
    EventID = WaitWindowEvent()     
    If EventID = #PB_Event_Gadget 
        Select EventGadget()
                ;--- connexion a userveur ftp
            Case #ButtonGadget_0
                ClearGadgetItems(#ListViewGadget_0)
                ClearGadgetItems(#ListIconGadget_0)
                If OpenFTP(#Ftp, GetGadgetText(#StringGadget_0), GetGadgetText(#StringGadget_1), GetGadgetText(#StringGadget_2))
                    AddGadgetItem (#ListViewGadget_0, -1," Connection réussi avec succès a : "+GetGadgetText(#StringGadget_0))
                    
                    
                    
                    ;- Code modifié
                    ;--- examin des dossiers et fichiers sur le serveur ftp         
                    scanFichiersDossiers()
                    
                    
                    
                    AddGadgetItem (#ListViewGadget_0, -1, "Il y a un total de : "+Str(CountGadgetItems(#ListIconGadget_0) - 1)+ " Fichiers") ;- Code modifié 
                Else
                    AddGadgetItem (#ListViewGadget_0,-1,"Impossible de se connecter à l'Hote : "+GetGadgetText(#StringGadget_0))
                EndIf
                
        EndSelect
    EndIf
    ;--- doubleclic ouvre le dossier sur le serveur ftp 
    Select EventID
        Case #PB_Event_Gadget
            Select EventGadget()
                Case #ListIconGadget_0
                    Select EventType()
                        Case #PB_EventType_LeftDoubleClick 
                            Repertoire$ = GetGadgetItemText(#ListIconGadget_0, GetGadgetState(#ListIconGadget_0), 0)
                            SetFTPDirectory(#Ftp, Repertoire$)
                            ClearGadgetItems(#ListIconGadget_0)
                            
                            
                            ;- Code modifié
                            scanFichiersDossiers(1)
                            
                            
							
                    EndSelect
            EndSelect
            ;--- active le drag and drop pour envoyé du serveur ftp vers le client
            Select EventID
                Case #PB_Event_Gadget
                    Select EventGadget()
                        Case #ListIconGadget_0
                            Select EventType()
                                Case #PB_EventType_DragStart
                                    Repertoire$ = GetGadgetItemText(#ListIconGadget_0, GetGadgetState(#ListIconGadget_0), 0)
                                    ReceiveFTPFile(#Ftp, Repertoire$ , GetGadgetText(#ExplorerListGadget_0)+GetGadgetItemText(#ListIconGadget_0, GetGadgetState(#ListIconGadget_0), 0) , 0)
                                    ClearGadgetItems(#ListViewGadget_0)
                                    AddGadgetItem (#ListViewGadget_0, -1, "Envoie terminé avec succées") 
                                    SetGadgetText(#ExplorerListGadget_0,  GetGadgetText(#ExplorerListGadget_0))
                                    
                            EndSelect
                    EndSelect
            EndSelect 
            
            ;--- active le drag and drop pour envoyé du client ftp vers le serveur
            Select EventID
                Case #PB_Event_Gadget
                    Select EventGadget()
                        Case #ExplorerListGadget_0
                            Select EventType()
                                Case #PB_EventType_DragStart
                                    Repertoire$ = GetGadgetText(#ExplorerListGadget_0)+GetGadgetItemText(#ExplorerListGadget_0, GetGadgetState(#ExplorerListGadget_0))
                                    SendFTPFile(#Ftp, Repertoire$ , GetFTPDirectory(#Ftp)+GetGadgetItemText(#ExplorerListGadget_0, GetGadgetState(#ExplorerListGadget_0)) , 0)
                                    ClearGadgetItems(#ListViewGadget_0)
                                    ClearGadgetItems(#ListIconGadget_0)
                                    
                                    
                                    
                                    ;- Code modifié
                                    scanFichiersDossiers()
                                    
                                    
                                    
                                    AddGadgetItem (#ListViewGadget_0, -1, "Envoie terminé avec succées") 
                                    AddGadgetItem (#ListViewGadget_0, -1, "Il y a un total de : "+Str(CountGadgetItems(#ListIconGadget_0) - 1)+ " Fichiers") ;- Code modifié
                                    
                            EndSelect
                    EndSelect
            EndSelect 
            
    EndSelect
    
Until EventID = #PB_Event_CloseWindow
End



Procedure scanFichiersDossiers(option.i = 0)
    If ExamineFTPDirectory(#Ftp) 
        While NextFTPDirectoryEntry(#Ftp) 
            If FTPDirectoryEntryType(#Ftp) = 1 
                Type$ = "fichier" 
            ElseIf FTPDirectoryEntryType(#Ftp) = 2 
                Type$ = "Dossier" 
            EndIf  
            
            
            If FTPDirectoryEntryName(#Ftp) <> "." ;- LE PROBLEME RESOLU 
                listeftp$ = FTPDirectoryEntryName(#Ftp) +Chr(10)+ Str(FTPDirectoryEntrySize(#Ftp))+" Ko"  +Chr(10)+ Type$ +Chr(10) + FormatDate("%dd/%mm/%yyyy",FTPDirectoryEntryDate(#Ftp)) 
                AddGadgetItem(#ListIconGadget_0, -1, listeftp$, 0) 
            EndIf 
            
            
            If option = 1
                ClearGadgetItems(#ListViewGadget_0) 
                AddGadgetItem (#ListViewGadget_0, -1, "Il y a un total de : "+Str(CountGadgetItems(#ListIconGadget_0) - 1)+ " Fichiers") ;- Code modifié  
            EndIf
        Wend 
    EndIf 
EndProcedure

Publié : mer. 08/juil./2009 15:45
par venom
Merci d'avoir corriger mon code ainsi que d'y apporter des améliorations :wink:

je vais le continuer et apporter des news.
merci




@++