
Le forum (ô combien francophone) des utilisateurs de Powerbuilder.








Bonjour tout le monde,
j'ai donc une liste de dossier que je parcours, je supprime leur contenu, et je veux ensuite supprimer le dossier lui même lorsqui'il est vide, mais il n'est a priori pas possible de le faire lorque c'est le répertoire en cours.. j'ai testé un changeDirectory mais sans résultat..
Quelqu'un aurait trouvé une alternative?
Merci
Hors ligne
Function boolean RemoveDirectoryA (ref string directoryname) library "KERNEL32.DLL"
Function boolean SetCurrentDirectoryA (ref string directoryname ) library "KERNEL32.DLL"

Hors ligne








oui oui j'ai deja tout ca ^^
Hors ligne
bah ca marche alors !
il suffit de faire
SetCurrentDirectoryA ("c:\")
puis RemoveDirectoryA ("ton repertoire")
A++

Hors ligne








SetCurrentDirectoryA je peux pas le remplacer par un changeDirectory ?
Hors ligne
non.
il faut utiliser le SetCurrentDirectoryA.
A++

Hors ligne








oki merci tu peux mettre en résolu alors ^^
Hors ligne
oky doky !
no soucy man
t'es sur que je peux ?

Hors ligne








ouiiiii fais toi plaisir allezzzzzzz vas yyyyyy
Hors ligne








petite modification :
ca ne fonctionne pas , voici mon code tout simple :
ls_new_directory = "c:\"
lb_test_retour= SetCurrentDirectoryA(ls_new_directory)
ls_test= GetCurrentDirectory ( )
lb_test_retour=RemoveDirectoryA(a_repertoire)
Hors ligne
chez moi ca fonctionne !
j'ai crée le repertoire c:\tutu
je me positionne sous ce repertoire
puis je vais à la racine c:\
et je supprime le repertoire créé.
et comme par un tour de magie, il disparait. (comme si j'avais englouti un hamburger...)
Function boolean RemoveDirectoryA (ref string directoryname) library "KERNEL32.DLL" Function boolean SetCurrentDirectoryA (ref string directoryname ) library "KERNEL32.DLL" FUNCTION long GetCurrentDirectoryA( long length , ref string path) LIBRARY "Kernel32"
string ls_new_directory, ls_directory
string ls_path
long ll_ret
ls_path = Space(250)
ll_ret = GetCurrentDirectoryA(250, ls_path)
IF ll_ret > 0 THEN
ls_path = Left(ls_path,ll_ret)
MessageBox("", ls_path)
ELSE
Messagebox("Error","Err GetCurrentDirectory " + String(ll_ret))
END IF
ls_new_directory = "c:\tutu"
ls_directory = "c:\tutu"
SetCurrentDirectoryA(ls_new_directory)
ll_ret = GetCurrentDirectoryA(250, ls_path)
IF ll_ret > 0 THEN
ls_path = Left(ls_path,ll_ret)
MessageBox("", ls_path)
ELSE
Messagebox("Error","Err GetCurrentDirectory " + String(ll_ret))
END IF
ls_new_directory = "c:\"
SetCurrentDirectoryA(ls_new_directory)
RemoveDirectoryA(ls_directory)

Hors ligne








oui mais mon mien il est ouvert par un FindFirstFileA ca y jou non ?
Hors ligne
???
essayes de suivre les consignes.
je ne comprends rien à ton firstmachinchouette.
on parle de repertoire, pas de fichier.
et pour pouvoir supprimer le repertoire, il faut qu'il ne contienne pas de fichiers...
j'ai fait le test sur un repertoire vide, et ca fonctionne parfaitement !

Hors ligne








oui oui j'ai essayé, mais en fait je fait un parcour récurssif des dossiers dans des dossier donc je cré une liste avec FindFirstFileA voila:)
Hors ligne
As-tu bien fait un FindClose (je ne me souviens plus du nom exact) après tes FindFirst / FindNext ? Sinon le répertoire reste verrouillé, je me suis déjà fait avoir comme ça.
Hors ligne








oui c'est bien un findclose j'ai testé mais il me semble que ca ne marche pas je reteste, merci !
en fait je le faisais deja :
lu_retour_close = FindClose(lu_retour_find) ls_new_directory = "c:\" lb_test_retour= SetCurrentDirectoryA(ls_new_repertoire) lb_test_retour=RemoveDirectoryA(a_repertoire)
Dernière modification par thezerg (13-12-2006 15:31:50)
Hors ligne
Et tous les fichiers sont bien supprimés ? Il ne reste pas de fichiers cachés/systèmes (genre desktop.ini, thumbs.db ou autres) qui ne sont pas pris en compte dans les critères que tu utilise avec FindFirst/Next ? Tu arrives à supprimer le répertoire à la main ?
Hors ligne








oui je pense qu'il ne reste rien puisque si je tente un remove_directory tout simple en dehors de ca ca marche :s
Hors ligne








j'ai redémarré PB et miracle.. ca marche.. désole
mais merci quand meme à tous!
Hors ligne
thezerg a écrit:
j'ai redémarré PB et miracle.. ca marche.. désole
mais merci quand meme à tous!
Probablement qu'il a raté un FindClose à un moment donné, à cause d'un debug interrompu par exemple. Où alors parce que tu n'avais pas toute de suite ces FindClose dans le code et donc que le système a gardé un verrou sur le répertoire.
Hors ligne








oui c'est possible
Hors ligne