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

)
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