01net    Web


Actuellement en ligne : 311 Utilisateurs dont 14 dans Programmation et développement >S'inscrire      >S'identifier      >Recherche      >Aide  
modéré par A.Ouloube, Beno@  
01net > Forum de 01net > Programmation et développement > algorithmique
> Visual Basic: Supprimer un dossier
Passionné(e) d'internet, de logiciels, de forums ? 01net recrute...
Auteur
Message
 
<     1       >
alpha02
  
   
      ?   @     Posté le 10/10/2006 22:23:29  
Voter pour ce message
Salut je suis en train de programmer un client FTP et j'utilise les functions de l'API wininet.dll et, pour supprimer un dossier, la fonction est:

Function FtpRemoveDirectory (connection, nom du dossier)

Cependant, la fonction n'est pas récursive: Elle fonctionne seulement si le dossier est vide. J'ai besoin d'un script pour supprimer tous les sous-dossiers et fichier dans le dossier, merci à l'avance :)
Minus-et-Cortex
  
   
      ?   @     Posté le 11/10/2006 14:07:00  
Voter pour ce message
Salut!

Je ne connais pas l'API, mais vu le contenu de la dll, je dirais :
FtpFindFirstFile : si la valeur retournée correspond à un fichier, tu l'effaces avec FtpDeleteFile. Si c'est un répertoire, alors tu appelles cette fonction récursivement en passant une chaine de caractères correspondant au chemin vers ce répertoire.
Quand l'appel réursif retourne, tu as supprimé tous les fichiers et sous-dossiers du répertoire. Il te suffit ensuite de supprimer le répertoire retourné par FtpFindFirstFile avec ta fonction FtpRemoveDirectory.
Cette technique suppose que FtpFindFirstFile te retourne indifféremment des fichiers ou des répertoires, et que tu aies un moyen de les distinguer (à l'aide d'un attribut par exemple).

Si ça peut t'aider...

@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
alpha02
  
   
      ?   @     Posté le 12/10/2006 02:54:16  
Voter pour ce message
J'ai trouvé mon script pour vider un dossier, mais la fonction FtpRemoveDirectory retourne toujours une erreur #6 - Overflow, peu importe comment je l'utilise. J'ai essayé un FtpCommand et elle retourne toujours False, et le dossier vide n'est pas supprimé. Une idée?
Minus-et-Cortex
  
   
      ?   @     Posté le 12/10/2006 12:27:00  
Voter pour ce message
Salut!

Idée qui me vient en premier : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wini(...)

Sinon, es-tu sûr d'avoir le droit de supprimer le répertoire distant ? (est-ce que le serveur FTP distant a les droits pour supprimer le répertoire).
-->Message édité par Minus-et-Cortex le 12/10/2006 12:28:57<--
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
alpha02
  
   
      ?   @     Posté le 14/10/2006 23:02:55  
Voter pour ce message
J'ai tous les droits, c'est un serveur que j'ai créé uniquement à des fins de test. J'ai essayé, juste pour voir,
FtpRemoveDirectory hConn, vbNullString

et j'ai une erreur #6-Overflow.
Minus-et-Cortex
  
   
      ?   @     Posté le 14/10/2006 23:45:55  
Voter pour ce message
Salut!

Cela me semble un peu louche de passer ce que je crois être une chaîne vide (vbNullString) pour supprimer un répertoire. Le deuxième paramètre doit être le nom du répertoire (chaîne à zéro terminal). Il faut que cette fonction utilise ole contexte retourné par l'appel à InternetConnect (cf http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wini(...)).
Eventuellement, si tu veux que je jette un coup d'oeil sur ton code...

@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
alpha02
  
   
      ?   @     Posté le 19/10/2006 20:30:39  
Voter pour ce message
J'ai fait un petit programme de test qui va juste se connecter à un serveur de test et supprimer un dossier. L'adresse:
http://www.testserver.b4site.com/source stuff/prjtest.exe

Tu as juste à l'exécuter, si tu recoit le message "your wininet.dll is corrupt" donc le programme a fini avec succès, contrairement à ce qu'on peut penser. J'ai fait les messages d'erreur le + vite possible :p


Laisse-moi savoir si le programme fait un Overflow, merci.
Minus-et-Cortex
  
   
      ?   @     Posté le 19/10/2006 20:34:49  
Voter pour ce message
Salut!

J'ai, après avoir cliqué sur le bouton 'Click here', une première pop-up qui affiche start point, puis une seconde qui indique une erreur 'Runtime error 6 Overflow'.

@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
alpha02
  
   
      ?   @     Posté le 20/10/2006 23:15:47  
Voter pour ce message
Ok le code quand on clique sur le bouton "Click here":

Sub btn_Click()
Dim hInt As Long
Dim hConn As Long
Dim hFile As Long

MsgBox "Start point"

hInt = InternetOpen("test", 1, vbNullString, vbNullString, 0) 'Just connect to Internet
hConn = InternetConnect(hInt, "<SERVER NAME>", 21, "<USERNAME>", "<PASSWORD>", 1, 0, 0) 'Login to server
hFile = FtpRemoveDirectory(hConn, "newcreated") 'CRASH HERE!!!!

MsgBox "Program completed successfully!"
End Sub

C'est ce code qui s'exécute quand tu clique sur le bouton. Juste comme ça, les fonctions wininet utilisées:

Private Declare Function InternetOpen Lib "wininet.dll" _
Alias "InternetOpenA" _
(ByVal lpszAgent As String, _
ByVal dwAccessType As Long, _
ByVal lpszProxyName As String, _
ByVal lpszProxyBypass As String, _
ByVal dwFlags As Long) As Long

Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" _
(ByVal hInternet As Long, _
ByVal lpszServerName As String, _
ByVal nServerPort As Long, _
ByVal lpszUserName As String, _
ByVal lpszPassword As String, _
ByVal dwService As Long, _
ByVal dwFlags As Long, _
ByVal dwContext As Long) As Long

Private Declare Function FtpRemoveDirectory Lib "wininet.dll" Alias "FtpRemoveDirectoryA" (ByVal hFtpSession As Integer, ByVal lpszDirectory As String) As Boolean
-->Message édité par alpha02 le 20/10/2006 23:17:15<--
<     1       >

01net > Forum de 01net > Programmation et développement > algorithmique
> Visual Basic: Supprimer un dossier

Aller à :

Page générée en : 0.537s - X2board 2.2

Nous contacter | Charte de confiance | Voir notice légale

Tous droits réservés © 1999 - 2008 Groupe Tests - 01net.


Sites du réseau 01net Network : 01net - 01men - Rmc.fr - Bfmtv.fr - Radiobfm.com - TousLesPodcasts - Micro Achat

Conversion vidéo
Convertissez vos fichiers dans les formats vidéo les plus courants (également psp, ipod, ...)
Jeux
Nouveauté : Voyagez dans le passé grâce à la machine à remonter le temps du Grand-père !