[RESOLU] DeleteDirectory() ne supprime rien !

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

[RESOLU] DeleteDirectory() ne supprime rien !

Message par omega »

Salut à tous et bonne année 2018 et très bonne fête !
J'ai une ListIconGadget qui contient la liste des répertoires à supprimer. Pour supprimer un répertoire, il suffit de cocher sa case.
Le problème c'est que rien ne s'efface... Pourquoi??
Merci

Code : Tout sélectionner

For wrow=0 To CountGadgetItems(#main_grid)-1
    If GetGadgetItemState(#main_grid,wrow) =#PB_ListIcon_Checked
       dossier$=GetGadgetItemText(#main_grid,wrow)
       dir$=GetCurrentDirectory()+ dossier$
       DeleteDirectory(dir$,"",#PB_FileSystem_Force | #PB_FileSystem_Recursive)
    EndIf     
Next wrow
MessageRequester("Terminé","Suppression terminée ! ")
Dernière modification par omega le dim. 31/déc./2017 21:53, modifié 1 fois.
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: DeleteDirectory() ne supprime rien !

Message par Zorro »

en remplaçant

Code : Tout sélectionner

dir$=GetCurrentDirectory()+ dossier$
par

Code : Tout sélectionner

dir$=dossier$
??

parce que avec "GetCurrentDirectory()" tu forces a ce que tes dossiers soient dans le meme dossier que ton prg ...
ne sachant pas ce que tu veux faire , et ne connaissant pas l'arborescence de tes fichiers, je suppute !
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: DeleteDirectory() ne supprime rien !

Message par omega »

Mon programme se trouve dans le même répertoire que le dossier à supprimer. J'ai ajouté GetCurrentDirectory() apès avoir testé justement dossier$ tout court. Toujours même résultat.
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: DeleteDirectory() ne supprime rien !

Message par Zorro »

Windows peut bloquer l'ecriture
si un fichiers se trouvant dans ton dossier a effacer est "ouvert"..
une voie a suivre ?
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: DeleteDirectory() ne supprime rien !

Message par omega »

@Zorro ! ça y est j'ai trouvé ! Je ne sais pas si tu le sais mais je viens de découvrir qq chose de bizarre .... chose que je ne savais pas et peut être même bon nombre de pubistes l'ignorent ....

Regardes: voici 2 dossiers présents au même titre que le programme, nommés respectivement dx23 et 102017.
Si on veut supprimer ces 2 dossiers et bien voici ce qui se passera:

le dossier dx23 sera supprimé le plus normalement du monde
mais le dossier 102017 ne sera pas supprimé !

Conclusion: DeleteDirectory() n'a aucun effet sur les dossiers dont le nom est formé de caractères numériques.... C'est exactement ce que je viens de remarquer Zorro!

Merci et excellente fin d'année !
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: DeleteDirectory() ne supprime rien !

Message par Zorro »

je savais qu'il y avait des nom reservé par windows pour les dossiers

par exemple : "con,AUX,LPT1,LPT2,LPT3 etc... " pour les chiffres, je ne savais pas :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: DeleteDirectory() ne supprime rien !

Message par omega »

Attends Zorro ! Ce n'est pas évident ce que je viens de dire, bien que j'ai testé avant de déclarer ce que j'ai dit. J'ai bien réussi à supprimer le 1er dossier mais pas le 2ème. J'ai renommé mon dossier (manuellement) puis je l'ai supprimé. Voilà que maintenant je me retrouve encore une fois au point ZERO. Le problème n'est pas tout à fait réglé...

Peut être que la fermeture des fichiers (en fait c'est des bases de données qui sont présentes dans le dossier à supprimer)

je vais essayer d'exécuter l'instruction avant d'ouvrir les bases de données .. . Voyons ce que ça donne...
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: DeleteDirectory() ne supprime rien !

Message par omega »

Oui effectivement comme tu le disais Zorro, il faut que tous les fichiers soient fermés pour que DeleteDirectory() marche.

Je viens de le tester et ça marche ! Je le confirme !

Merci encore et à l'année prochaine !......
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: [RESOLU] DeleteDirectory() ne supprime rien !

Message par Zorro »

Bonne Année a toi :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: [RESOLU] DeleteDirectory() ne supprime rien !

Message par Marc56 »

Sous Windows ou Dos, ou n'importe quel OS, on ne peut supprimer un dossier si on a le pied dessus (= un programme est ouvert dedans, même si c'est simplement le dossier qui est ouvert avec aucun fichier dedans)
L'explorateur ou certains programmes comme TC peuvent le faire, mais pas le shell (command.com ou cmd.exe)

Code : Tout sélectionner

CreateDirectory("C:\Tmp")
SetCurrentDirectory("C:\tmp")
CreateDirectory("dx23")
CreateDirectory("102017")

DeleteDirectory("dx23", "*")

SetCurrentDirectory("102017")
Debug DeleteDirectory("102017", "*")
; On ne peut supprimer ce rép puisqu'on est dedans

SetCurrentDirectory("C:\tmp")
Debug DeleteDirectory("102017", "*")
; Là c'est ok car on est remonté au niveau au dessus
Note: Cette notion explique pourquoi, pour parcourir un répertoire (= aller dedans) il faut lui mettre l'attribut +x (exécutable)

Bonne année

:wink:
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: [RESOLU] DeleteDirectory() ne supprime rien !

Message par omega »

@Marc56

Merci pour ces infos marc, je voulais juste confirmer que le dossier 'exemple Dos1' à supprimer se trouve dans le dossier principal (Dossier) dans lequel se trouve mon programme:
d:\Dossier\
- MonProgramme.pb
- Dos1\
- etc...


BONNE ANNEE !
Win7 (x64) 64 bits Pb 5.72
Répondre