FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Panoramic et ses curiosités
par Klaus Aujourd'hui à 2:20

» Synedit Parameters
par Klaus Aujourd'hui à 1:33

» Utilitaire de suppression de fichiers
par Yannick Hier à 23:03

» Code à vérifier SVP (Oups ! résolu)
par Jean Claude Jeu 22 Juin 2017 - 21:16

» Compilateur FBPano
par jean_debord Jeu 22 Juin 2017 - 9:56

» Bienvenue à Virtualalan !
par UltraVox Jeu 22 Juin 2017 - 9:18

» Concours de Morpions
par jjn4 Jeu 22 Juin 2017 - 0:04

» ShortName$(F) [Cloturé]
par papydall Mer 21 Juin 2017 - 16:19

» Remplacer espace par tiret dans noms des dossiers / fichiers
par papydall Mer 21 Juin 2017 - 15:27

» Menu personalisé avec icones et menu contextuel
par Laurent (Minibug) Mer 21 Juin 2017 - 12:44

» La liste des choses à faire ...
par Jack Mar 20 Juin 2017 - 22:49

» Quoi de neuf à propos de Goric 3D ? (@Jack)
par UltraVox Mar 20 Juin 2017 - 21:06

» Nom court et anti fenetre dos
par silverman Mar 20 Juin 2017 - 18:31

» Ludothèque Panoramic
par jjn4 Mar 20 Juin 2017 - 18:09

» Proposition à la communauté
par Yannick Mar 20 Juin 2017 - 15:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juin 2017
LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
2627282930  
CalendrierCalendrier

Partagez | 
 

 Supression d'un répertoire

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Supression d'un répertoire   Mar 27 Nov 2012 - 17:14

Bonjour,
Voici une petite procédure qui permet de détruire tout un dossier ainsi que ses sous-répertoires / fichiers...
La demo ci-dessous crée d'abord cette arborescence :
Code:
test
  |
  +-- dossier1
  |      |
  |      +-- dossier2
  |      |    |
  |      |    |-- texte1.txt
  |      |    |-- texte1.txt
  |      |   
  |      +-- dossier3
  |      |    |
  |      |    |-- texte1.txt
  |      |
  |      |-- texte1.txt
  |      |-- texte2.txt
  |
  |-- texte1.txt
puis l'appel à la procédure la détruit.

Code:
HIDE 0
APPLICATION_TITLE "Demo: Remove_Dir"

' Variables pour la démo
DIM Lecteur$:Lecteur$="D:\"
DIM D_efface$
DIM crlf$:crlf$=CHR$(10)+CHR$(13)
DIM msg$
D_efface$=Lecteur$+"test"

' création des répertoires et fichiers pour le test
msg$="Création du répertoire "+D_efface$+crlf$
msg$=msg$+"Après validation de ce message, vérifiez son existence sur votre disque..."
MESSAGE msg$
CreateDir(D_efface$)
CreateDir(D_efface$+"\dossier1")
CreateDir(D_efface$+"\dossier1\dossier2")
CreateDir(D_efface$+"\dossier1\dossier3")
FILE_OPEN_WRITE 1,Lecteur$+"test\dossier1\texte3.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,Lecteur$+"test\dossier1\texte4.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,Lecteur$+"test\dossier1\dossier2\texte1.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,Lecteur$+"test\dossier1\dossier2\texte2.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,Lecteur$+"test\dossier1\dossier3\texte6.txt":FILE_CLOSE 1
msg$="Le repertoire "+D_efface$+" est crée. On va maintenant l'effacer."+crlf$+crlf$
msg$=msg$+"Note:"+crlf$+"Assurez-vous que votre explorateur de fichier ne pointe pas"+crlf$
msg$=msg$+"dessus sinon le répertoire est verrouillé..."
MESSAGE msg$
Remove_Dir(D_efface$)
MESSAGE "Fini!"+crlf$+"Normalement vous ne devriez plus avoir de répertoire "+D_efface$
TERMINATE
END
' pour simplifier l'écriture de la démo ;)
SUB CreateDir(current_dir$)
 IF DIR_EXISTS(current_dir$)=0 THEN DIR_MAKE current_dir$
END_SUB

' Cette procédure utilise une DLIST.
' Vous pouvez adapter son numero à la valeur que vous voulez...
SUB Remove_Dir(current_dir$)
  IF VARIABLE("f$")=0 THEN DIM f$
  DLIST 100 : tmpDel_Dir(current_dir$,100)
  DELETE 100 : FREE f$
END_SUB

SUB tmpDel_Dir(current_dir$,Pile)
  ITEM_ADD Pile,current_dir$
  IF DIR_EXISTS(current_dir$)=1
    DIR_CHANGE current_dir$
    FILE_FIND_CLOSE : f$=FILE_FIND_FIRST$
    WHILE f$<>"_"
      IF FILE_EXISTS(f$)=1
        FILE_DELETE f$
        f$=FILE_FIND_NEXT$
      ELSE
        IF DIR_EXISTS(f$)=1
          tmpDel_Dir(f$,Pile)
        END_IF
      END_IF
    END_WHILE
    FILE_FIND_CLOSE
    f$=DIR_CURRENT$: DIR_CHANGE ".."
    DIR_REMOVE f$
  END_IF
  f$=ITEM_READ$(Pile,COUNT(Pile)):ITEM_DELETE Pile,COUNT(Pile)
  DIR_CHANGE f$:f$=FILE_FIND_FIRST$
END_SUB
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
papydall

avatar

Nombre de messages : 5384
Age : 66
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Supression d'un répertoire   Mar 27 Nov 2012 - 18:35

Salut Nardo26.
Ce code marche parfaitement : belle illustration.
Ceci prouve que le bug relatif à FILE_FIND_FIRST$ et FILE _FIND_NEXT$ a été corrigé.
Merci à Jack.

Petite remarque :
Pour une nouvelle ligne ,un simple CR ( chr$(13)) suffit, pas besoin d’un LF (chr$(10)) en plus! Mais c'est secondaire!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/ En ligne
JL35



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Supression d'un répertoire   Mar 27 Nov 2012 - 19:22

Salut Nardo,
Bizarre ton programme (chez moi):
L'arborescence des répertoires est bien créée sur ma clé usb (G:\Test ...), j'acquitte pour l'effacement, ça va dans le Remove_Dir et là il ne se passe plus rien: je ne dois pas aller jusqu'au TERMINATE puisqu'il reste un PANORAMIC.exe dans les tâches actives, et de plus les répertoires ne sont pas effacés, ça doit tourner en rond quelque part.
Et effectivement je n'ai pas le message de fin, ça boucle dans la procédure d'effacement.

Pour moi, ce que je fais habituellement pour supprimer une arborescence de répertoires, c'est tout simplement (par exemple pour le répertoire que tu donnes D_efface$):
Code:
EXECUTE "CMD.exe /C RMDIR /S /Q " + D_efface$
et ça marche très bien.
(le /S c'est pour supprimer également tous les sous-répertoires et leur contenu, le /Q c'est pour ne pas demander confirmation)
Évidemment à manipuler en sachant bien ce qu'on fait: tout est irrémédiablement effacé.

Je note en passant que le DIR_REMOVE de Panoramic ne fait rien si le répertoire n'est pas vide, ce qui est normal d'après la doc, mais surtout il ne signale pas d'erreur dans ce cas, ce qui n'est pas normal.


AUTANT POUR MOI NARDO. JE N'AI PAS LA DERNIERE VERSION DE PANORAMIC AVEC LA CORRECTION DU BUG
JE REESSAYE AVEC LA DERNIERE.

Donc j'ai mis le bug en évidence Very Happy
Effectivement, je confirme, avec la dernière version ça marche très bien, dont acte.
N'empêche que ma méthode (certes moins élégante et moins sophistiquée que la tienne) est bien plus rapide à mettre en oeuvre...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5384
Age : 66
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Supression d'un répertoire   Mar 27 Nov 2012 - 19:49

@JL35
La réponse est dans ta question : tu n’as pas la dernière version de Panoramic qui a corrigé le bug de FILE_FIND_FIRST$ / FILE_FIND_NEXT$


Pour les autres remarques, je suis d’accord avec toi, et j’ajouterais que le répertoire à supprimer ne doit pas être aussi le répertoire en cours !
On peu aussi abréger RMDIR en RD


Dernière édition par papydall le Mar 27 Nov 2012 - 19:59, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/ En ligne
JL35



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Supression d'un répertoire   Mar 27 Nov 2012 - 19:54

Eh oui, j'ai d'ailleurs édité pour confirmer que ça marche. Du coup ça m'a forcé à me mettre à jour.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5384
Age : 66
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Supression d'un répertoire   Mar 27 Nov 2012 - 20:02

C’est toujours ça de gagné : la mise à jour ( pour ne pas rester à la mise à nuit !!!)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/ En ligne
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Supression d'un répertoire   Mer 28 Nov 2012 - 9:26

Bonjour,

On peut faire comme le dis JL35, un RMDIR /S , cela fonctionne très bien.
Par contre l'apparition de la fenêtre DOS n'est pas tip-top mais cela marche ! Smile
D'ailleurs si Jack pouvait faire quelque chose à ce sujet, cela nous éviterai d'utiliser des DLL pour masquer cette fenêtre... Wink

Pour ma défense, la procédure Remove_dir m'a permis de vérifier que le FILE_FIND_CLOSE remplissait bien son rôle avec la dernière version
et que les variables locales ne sont bien déclarées qu'une seule fois "donc globales" dans une SUB (d'où l'utilisation d'une pile car cette SUB est récursive)

Après coup je me suis rendu compte qu'il manquait une ligne dans le code:
il faut rajouter, juste avant de faire le FILE_DELETE f$

Code:
FILE_READ_ONLY_OFF f$
Sinon cela ne marche pas si un répertoire contient un fichier en lecture seule... Wink

@papydall : le CHR$(10) est un réflexe chez moi... Laughing

JL35 a écrit:
N'empêche que ma méthode (certes moins élégante et moins sophistiquée que la tienne) est bien plus rapide à mettre en oeuvre...
C'était vrai avant que je mette sur le forum ce bout de code, maintenant un simple copier/coller ou même un include de la procédure et c'est tout aussi rapide... Laughing

Pour ceux qui veulent l’intégrer dans une librairie, je conseille de faire en sorte que le numéro de la DLIST soit déterminé de manière automatique.
J'avais fais une SUB qui me cherchait un numéro d'objet dispo (dans "gestion de chaine de caractères"), ce qui nous donnes :

Code:
SUB Remove_Dir(current_dir$)
  DIM_LOCAL i% : StrObjectId%(ADR(i%))
  IF VARIABLE("f$")=0 THEN DIM f$
  DLIST i% : tmpDel_Dir(current_dir$,i%)
  DELETE i% : FREE f$
END_SUB
' ------------------------------------------------------------------------------
' Procédure interne pour fonctionnement dans une librairie
' Renvoie un numéro d'objet libre
' p_r% : adresse de la variable de retour
' ------------------------------------------------------------------------------
SUB StrObjectId%(p_r%)
  DIM_LOCAL i%:i%=1
  i% = 1
  WHILE OBJECT_EXISTS(i%) = 1 : i% = i% + 1 : END_WHILE
  POKE p_r%,i%
END_SUB

Il y a une chose à modifier aussi c'est le nom de la variable f$ : il vaut mieux y mettre un nom à coucher dehors pour être sûr qu'elle ne soit pas utiliser ailleurs... (par exemple RemoveDir_f$) Wink


Dernière édition par Nardo26 le Mer 28 Nov 2012 - 9:50, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
pan59

avatar

Nombre de messages : 367
Age : 59
Localisation : Wattignies
Date d'inscription : 16/10/2011

MessageSujet: Suppression d'un réprtoire.   Mer 28 Nov 2012 - 9:48

Bonjour.

Est-il possible de désactiver l'affichage de la fenêtre DOS en ajoutant un echo off ?

Code:
EXECUTE "CMD.exe echo off"
EXECUTE "CMD.exe /C RD /S /Q " + D_efface$


Merci de vos réponses.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5838
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Supression d'un répertoire   Mer 28 Nov 2012 - 9:52

Non pan, il faut utiliser la DLL de Klaus pour que l'appel n'ouvre pas de fenêtre.
Echo off fera juste que tu ne verra rien dans la fenêtre noire, mais tu verras la fenêtre vide
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Supression d'un répertoire   Mer 28 Nov 2012 - 9:52

Bonjour Pan59,

Non car chaque commande EXECUTE te provoque l'affichage d'une fenêtre:
donc dans ton exemple, tu vas avoir 2 fenêtres...
Bon je vous laisse faut que je parte au boulot... Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
JL35



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Supression d'un répertoire   Mer 28 Nov 2012 - 11:45

Nardo, j'avais bien compris ta démarche, ton code est bien plus élégant que mon appel à une fonction msdos, mais quand même au prix de quelques lignes de code au lieu d'une seule (incidemment, bon courage pour le boulot, et vive la retraite !).

@pan59
Concernant l'apparition de la fenêtre noire, justement, j'ai donné ailleurs une manip simple pour l'éviter, sans faire appel à une dll, tout dans le code panoramic, c'est là:
http://panoramic.free-boards.net/t2539-suppression-de-la-fenetre-noire?highlight=fen%EAtre+noire
Ce qui donnerait ici, en reprenant la sub que j'ai donné:
Code:
Exprog("Cmd.exe /c RMDIR /S /Q " + D_efface$)
et là, plus de fenêtre noire !
(ce serait évidemment mieux, comme l'a dit Nardo, si c'était intégré à Panoramic).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Supression d'un répertoire   Mer 28 Nov 2012 - 19:55

Oups ! Embarassed
J'avais zappé ta solution en vbs... Smile
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
JL35



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Supression d'un répertoire   Jeu 29 Nov 2012 - 0:02

Ça peut toujours intéresser les programmeurs un peu réticents à adjoindre des dll à leurs exécutables s'il y a une possibilité (même un peu tordue) de faire autrement avec Panoramic.

Je ne parle pas de moi hein ! Very Happy

Quoique ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 9971
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Supression d'un répertoire   Jeu 29 Nov 2012 - 0:47

Soyons précis:

Cette solution avec VBScript marche parfaitement. Mais, et il y a un MAIS:
VBScript est un produit MicroSoft, fourni avec la plupart des systèmes Windows, mais pas systématiquement. Et cet outil utilise un exécutable et des DLLs Windows, de façon interne.

Alors, si on a ce produit sur son système, tant mieux. Sinon, il faut le télécharger et l'installer, et c'est plutôt galère s'il s'agit d'une distribution pour un site tiers. Pour cette raison, je préfère en général la solution par DLL, car on reste interne à Panoramic, gardant la maîtrise et évitant d'éventuels problèmes de licence.

EDIT

Pour ceux qui veulent en savoir plus:
regarder ici
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Supression d'un répertoire   Jeu 29 Nov 2012 - 1:09

Dont acte, je pensais que ça faisait partie systématiquement de la livraison Windows, l'ayant toujours eu en standard sur mes pc.
Et si je regarde vers ton lien (intéressant, et que je connaissais), je lis ceci:
Citation :
WSH+VBS+JS sont intégrés dès le départ dans Windows 98, 98SE, ME, 2000, XP.
donc directement utilisables.
Ils doivent être installés au préalable sous Windows 95 et NT4.
et donc je suppose (ça date de 2005) que ça a suivi dans Vista et 7
Maintenant, que ça utilise des dll en interne, je m'en doute un peu, mais l'avantage que j'y voyais est que l'exécutable produit contient tout ce qui lui est nécessaire en un seul fichier.
Citation :
...la solution par DLL, car on reste interne à Panoramic
Il faut quand même joindre un fichier externe (la ou les dll) à l'exécutable créé par Panoramic, avec les problèmes de chemins d'accès que ça peut poser.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 9971
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Supression d'un répertoire   Jeu 29 Nov 2012 - 1:47

Ah, c'est le fichier supplémentaire qui dérange ! Bien sûr, il y a un fichier en plus, et pour le moment, il ne peut pas être pris en compte dans la génération d'application. Espérons qu'un jour, Jack ouvrira la génération d'application à d'autres types de fichiers.

Mais souvent, il y a de toutes façons des fichiers annexes (images, données tels que plans de jeux, fichiers d'aide, etc), et un fichier supplémentaire n'est pas si bloquant que ça, d'autant qu'il y a des générateurs de programmes d'instammation gratuits sur le net, et ils prendront automatiquement la mise en place en charge. On peut même en écrire un en Panoramic, spécifique au programme à installer... Si j'ai dit que c'est "interne" à Panoramic, c'était une maladresse. Je voulais dire qu'on ne fait pas appel à des logiciels tiers, ce qui est toujours un peu délicat. Et pour la présence de VBScript sous XP, tu as raison: c'est présent d'office. Mais suivant les versions, ce n'est pas forcément activé ! Il faut donc activer cette partie suivant les instructions données sur cette page (ou ailleurs, sur MSDN par exemple). C'est ce qui m'est arrivé lorsque j'ai voulu m'en servir la première fois.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: Supression d'un répertoire   Jeu 29 Nov 2012 - 3:03

Citation :
On peut même en écrire un en Panoramic, spécifique au programme à installer
J'ai voulu en faire un, et cela marchait, jusqu'à je veuille faire un fichier zip avec.
Et là ça ne marche plus. Je ne sais plus la raison, mais il me semble que le chemin zip n'est pas accessible. Toujours est-il qu'il y a un problème de chemin que je n'ai pas su résoudre. Si on fait un installateur sans zipper le programme, ça marche bien.
Revenir en haut Aller en bas
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Supression d'un répertoire   Jeu 29 Nov 2012 - 9:33

Bonjour,

Petites modifs en tenant compte de ce que j'ai écris avant :

Code:
HIDE 0
APPLICATION_TITLE "Demo: Remove_Dir"

' Variables pour la démo
DIM Lecteur$:Lecteur$="C:\"
DIM D_efface$
DIM lf$:lf$=CHR$(13) : ' pour faire plaisir à Papydall ;)
DIM msg$
D_efface$=Lecteur$+"test"

' création des répertoires et fichiers pour le test
msg$="Création du répertoire "+D_efface$+lf$
msg$=msg$+"Après validation de ce message, vérifiez son existence sur votre disque..."
MESSAGE msg$

' On crée des répertoires quelconques
CreateDir(D_efface$)
CreateDir(D_efface$+"\dossier1")
CreateDir(D_efface$+"\dossier1\dossier2")
CreateDir(D_efface$+"\dossier1\dossier3")

' Ainsi que des fichiers
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\texte3.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\texte4.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\dossier2\texte1.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\dossier2\texte2.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\dossier3\texte6.txt":FILE_CLOSE 1

msg$="Le répertoire "+D_efface$+" est crée. On va maintenant l'effacer."+lf$+lf$
msg$=msg$+"Note:"+lf$+"Assurez-vous que votre explorateur de fichier ne pointe pas"+lf$
msg$=msg$+"dessus sinon le répertoire est verrouillé..."
MESSAGE msg$

' Destruction du répertoire

Remove_Dir(D_efface$)


MESSAGE "Fini!"+lf$+"Normalement vous ne devriez plus avoir de répertoire "+D_efface$
TERMINATE

END

' pour simplifier la lecture/écriture de la démo ;)
SUB CreateDir(current_dir$)
 IF DIR_EXISTS(current_dir$)=0 THEN DIR_MAKE current_dir$
END_SUB

' ------------------------------------------------------------------
' Procédure de destruction de répertoire
' ------------------------------------------------------------------

SUB Remove_Dir(current_dir$)
  DIM_LOCAL i% : getObjectId%(ADR(i%))
  DIM RemoveDir_f$
  DLIST i% : tmpDel_Dir(current_dir$,i%)
  DELETE i% : FREE RemoveDir_f$
END_SUB

SUB tmpDel_Dir(current_dir$,Pile%)
  ITEM_ADD Pile%,current_dir$
  IF DIR_EXISTS(current_dir$)=1
    DIR_CHANGE current_dir$
    FILE_FIND_CLOSE : RemoveDir_f$=FILE_FIND_FIRST$
    WHILE RemoveDir_f$<>"_"
      IF FILE_EXISTS(RemoveDir_f$)=1
        FILE_READ_ONLY_OFF RemoveDir_f$
        FILE_DELETE RemoveDir_f$
        RemoveDir_f$=FILE_FIND_NEXT$
      ELSE
        IF DIR_EXISTS(RemoveDir_f$)=1
          tmpDel_Dir(RemoveDir_f$,Pile%)
        END_IF
      END_IF
    END_WHILE
    FILE_FIND_CLOSE
    RemoveDir_f$=DIR_CURRENT$: DIR_CHANGE ".."
    DIR_REMOVE RemoveDir_f$
  END_IF
  RemoveDir_f$=ITEM_READ$(Pile%,COUNT(Pile%)):ITEM_DELETE Pile%,COUNT(Pile%)
  DIR_CHANGE RemoveDir_f$:RemoveDir_f$=FILE_FIND_FIRST$
END_SUB
' ------------------------------------------------------------------------------
' Procédure interne pour fonctionnement dans une librairie
' Renvoie un numéro d'objet libre
' p_r% : adresse de la variable de retour
' ------------------------------------------------------------------------------
SUB getObjectId%(p_r%)
  DIM_LOCAL i%:i%=1
  i% = 1
  WHILE OBJECT_EXISTS(i%) = 1 : i% = i% + 1 : END_WHILE
  POKE p_r%,i%
END_SUB
Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
papydall

avatar

Nombre de messages : 5384
Age : 66
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Supression d'un répertoire   Jeu 29 Nov 2012 - 13:14

Salut Nardo 26
Merci pour me faire plaisir.
Ah Ah : il y a une ERREUR et non un bug ! ‘(161) Unknown directory. Line 81’
C’est à cause de CHANGE_DIR que Jack vient de compléter.

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/ En ligne
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Supression d'un répertoire   Jeu 29 Nov 2012 - 15:06

En effet Papydall...

Voici la version corrigée : Smile

Code:
HIDE 0
APPLICATION_TITLE "Demo: Remove_Dir"

' Variables pour la démo
DIM Lecteur$:Lecteur$="C:\"
DIM D_efface$
DIM lf$:lf$=CHR$(13) : ' pour faire plaisir à Papydall ;)
DIM msg$
D_efface$=Lecteur$+"test"

' création des répertoires et fichiers pour le test
msg$="Création du répertoire "+D_efface$+lf$
msg$=msg$+"Après validation de ce message, vérifiez son existence sur votre disque..."
MESSAGE msg$
' On crée des répertoires quelconques
CreateDir(D_efface$)
CreateDir(D_efface$+"\dossier1")
CreateDir(D_efface$+"\dossier1\dossier2")
CreateDir(D_efface$+"\dossier1\dossier3")

' Ainsi que des fichiers
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\texte3.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\texte4.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\dossier2\texte1.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\dossier2\texte2.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\dossier3\texte6.txt":FILE_CLOSE 1

msg$="Le répertoire "+D_efface$+" est crée. On va maintenant l'effacer."+lf$+lf$
msg$=msg$+"Note:"+lf$+"Assurez-vous que votre explorateur de fichier ne pointe pas"+lf$
msg$=msg$+"dessus sinon le répertoire est verrouillé..."
MESSAGE msg$

' Destruction du répertoire

Remove_Dir(D_efface$)


MESSAGE "Fini!"+lf$+"Normalement vous ne devriez plus avoir de répertoire "+D_efface$
TERMINATE

END

' pour simplifier la lecture/écriture de la démo ;)
SUB CreateDir(current_dir$)
 IF DIR_EXISTS(current_dir$)=0 THEN DIR_MAKE current_dir$
END_SUB

' ------------------------------------------------------------------
' Procédure de destruction de répertoire
' ------------------------------------------------------------------

SUB Remove_Dir(current_dir$)
  DIM_LOCAL i% : getObjectId%(ADR(i%))
  DIM RemoveDir_f$
  DLIST i% : tmpDel_Dir(current_dir$,i%)
  DELETE i% : FREE RemoveDir_f$
END_SUB

SUB tmpDel_Dir(current_dir$,Pile%)
  ITEM_ADD Pile%,current_dir$
  IF DIR_EXISTS(current_dir$)=1
    DIR_CHANGE current_dir$
    FILE_FIND_CLOSE : RemoveDir_f$=FILE_FIND_FIRST$
    WHILE RemoveDir_f$<>"_"
      IF FILE_EXISTS(RemoveDir_f$)=1
        FILE_READ_ONLY_OFF RemoveDir_f$
        FILE_DELETE RemoveDir_f$
        RemoveDir_f$=FILE_FIND_NEXT$
      ELSE
        IF DIR_EXISTS(RemoveDir_f$)=1
          tmpDel_Dir(RemoveDir_f$,Pile%)
        END_IF
      END_IF
    END_WHILE
    FILE_FIND_CLOSE
    RemoveDir_f$=DIR_CURRENT$: DIR_CHANGE ".."
    DIR_REMOVE RemoveDir_f$
  END_IF
  ITEM_DELETE Pile%,COUNT(Pile%)
  RemoveDir_f$=FILE_FIND_FIRST$
END_SUB
' ------------------------------------------------------------------------------
' Procédure interne pour fonctionnement dans une librairie
' Renvoie un numéro d'objet libre
' p_r% : adresse de la variable de retour
' ------------------------------------------------------------------------------
SUB getObjectId%(p_r%)
  DIM_LOCAL i%:i%=1
  i% = 1
  WHILE OBJECT_EXISTS(i%) = 1 : i% = i% + 1 : END_WHILE
  POKE p_r%,i%
END_SUB
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
papydall

avatar

Nombre de messages : 5384
Age : 66
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Supression d'un répertoire   Jeu 29 Nov 2012 - 19:02

OK !
Note : 9.9/10
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/ En ligne
Contenu sponsorisé




MessageSujet: Re: Supression d'un répertoire   

Revenir en haut Aller en bas
 
Supression d'un répertoire
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Répertoire parent
» Supression d'un membre
» Supression du contenu et du design d'un forum
» Changement de l'adresse du forum + supression du forum
» Supression de plusieurs parties du forum

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Vos sources, vos utilitaires à partager-
Sauter vers: