Recopie de l'architecture d'un dossier

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Recopie de l'architecture d'un dossier

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

super regis
bravo pour ton outil
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

C'est vrai que c sympa...
Merci.
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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...
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Si tu compile avec tailbaite, les globales seront 'locales' a ta lib, non ?
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Je sais pas, je n'utilise pas tailbite.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Oui ca fonctionne.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Les globales fonctionnent sous TailBite et dans les dll :wink:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre