Page 1 sur 1

Recopie de l'architecture d'un dossier

Publié : mer. 13/juil./2005 14:53
par Le Soldat Inconnu
Copier l'architecture des dossiers d'un dossier vers un autre (différant d'un cpier collé car seul les dossiers sont dupliqué, les fichiers ne le sont pas)
Le programme n'a rien de compliquer mais ça peut servir. Je l'ai fait car j'en avais besion au boulot (d'ou la licence sur clic droit)

Code : Tout sélectionner

Global Dossier1.s, Dossier2.s

Procedure Copie(n, Dossier.s)
  If Right(Dossier, 1) <> "\"
    Dossier + "\"
  EndIf
  If ExamineDirectory(n, Dossier1 + Dossier, "*.*")
    Repeat
      FileType = NextDirectoryEntry()
      If FileType = 2
        Nom.s = DirectoryEntryName()
        If Nom <> "." And Nom <> ".."
          CreateDirectory(Dossier2 + Dossier + Nom)
          Copie(n + 1, Dossier + Nom)
          UseDirectory(n)
        EndIf
      EndIf
    Until FileType = 0
  EndIf
EndProcedure

OpenWindow(0, 0, 0, 250, 100, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, "Architecture de dossier")
CreateGadgetList(WindowID())

TextGadget(#pb_any, 5, 5, 240, 15, "Dossier à dupliquer")
StringGadget(0, 5, 20, 220, 20, "", #PB_String_ReadOnly)
ButtonGadget(1, 225, 20, 20, 20, "...")
TextGadget(#pb_any, 5, 40, 240, 15, "Dossier de destination")
StringGadget(2, 5, 55, 220, 20, "", #PB_String_ReadOnly)
ButtonGadget(3, 225, 55, 20, 20, "...")
ButtonGadget(4, 5, 75, 240, 20, "Lancer")

Repeat
  Event = WaitWindowEvent()
  
  If Event = #PB_Event_Gadget
    Select EventGadgetID()
      Case 1
        Txt.s = PathRequester("Dossier à dupliquer", Dossier1)
        If Txt
          Dossier1 = Txt
          If Right(Dossier1, 1) <> "\"
            Dossier1 + "\"
          EndIf
          SetGadgetText(0, Dossier1)
        EndIf
      Case 3
        Txt.s = PathRequester("Dossier de destination", Dossier2)
        If Txt
          Dossier2 = Txt
          If Right(Dossier2, 1) <> "\"
            Dossier2 + "\"
          EndIf
          SetGadgetText(2, Dossier2)
        EndIf
      Case 4
        If Dossier1 And Dossier2 And FileSize(Dossier1) = -2 And FileSize(Dossier2) = -2
          Copie(0, "")
          MessageRequester("Architecture de dossier", "Recopie de l'architecture du dossier terminée.")
        Else
          MessageRequester("Architecture de dossier", "Veuillez remplir tous les champs.")
        EndIf
    EndSelect
  ElseIf Event = #WM_RBUTTONDown
    MessageRequester("Concepteur", "LSI Développements [BOUGUIN Régis]" + Chr(10) + "Programme gratuit pour l'usage personnel et en entreprise.")
  EndIf
  
Until Event = #WM_Close

Publié : mer. 13/juil./2005 15:09
par bernard13
super regis
bravo pour ton outil

Publié : mer. 13/juil./2005 15:14
par gansta93
C'est vrai que c sympa...
Merci.

Publié : mer. 13/juil./2005 17:19
par lionel_om
Sympa, mais pour l'utilisation des globales, c'est aps cool.
Tu aurait pu t'en passer...
Faut retoucher ca pour faire une LIB...

Publié : mer. 13/juil./2005 18:22
par Fred
Si tu compile avec tailbaite, les globales seront 'locales' a ta lib, non ?

Publié : mer. 13/juil./2005 18:29
par nico
Tiens, c'est une bonne question; effectivement on peut penser que les globales ne seront accessibles que pour la lib; c'est plutôt arrangeant et ça éviterait de passser par des SetProp par exemple.

Publié : mer. 13/juil./2005 18:51
par Dr. Dri
Fred a écrit :Si tu compile avec tailbaite, les globales seront 'locales' a ta lib, non ?
Fonctionne aussi avec les dll ? (jamais testé)

Dri

Publié : mer. 13/juil./2005 19:07
par Fred
Je sais pas, je n'utilise pas tailbite.

Publié : mer. 13/juil./2005 19:15
par Dr. Dri
je parlais des dll ^^
si on en compile une avec dedans une variable globale, ca fonctionne ?
(elle est globale pour toutes les fonctions de la dll ?)

Dri

Publié : mer. 13/juil./2005 19:28
par Fred
Oui ca fonctionne.

Publié : mer. 13/juil./2005 19:52
par Le Soldat Inconnu
Les globales fonctionnent sous TailBite et dans les dll :wink: