FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
FILE_FIND: Arborescence des répertoires dans un mémo Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
FILE_FIND: Arborescence des répertoires dans un mémo Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
FILE_FIND: Arborescence des répertoires dans un mémo Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
FILE_FIND: Arborescence des répertoires dans un mémo Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
FILE_FIND: Arborescence des répertoires dans un mémo Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
FILE_FIND: Arborescence des répertoires dans un mémo Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
FILE_FIND: Arborescence des répertoires dans un mémo Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
FILE_FIND: Arborescence des répertoires dans un mémo Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
FILE_FIND: Arborescence des répertoires dans un mémo Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
FILE_FIND: Arborescence des répertoires dans un mémo Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
FILE_FIND: Arborescence des répertoires dans un mémo Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
FILE_FIND: Arborescence des répertoires dans un mémo Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
FILE_FIND: Arborescence des répertoires dans un mémo Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
FILE_FIND: Arborescence des répertoires dans un mémo Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
FILE_FIND: Arborescence des répertoires dans un mémo Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le deal à ne pas rater :
Code promo Nike : -25% dès 50€ d’achats sur tout le site Nike
Voir le deal

 

 FILE_FIND: Arborescence des répertoires dans un mémo

Aller en bas 
+2
papydall
Klaus
6 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
Klaus

Klaus


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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyJeu 31 Mai 2012 - 23:50

Petit exercice d'utilisation de FILE_FIND_FIRST, FILE_FIND_NEXT et FILE_FIND_CLOSE pour construire une liste de l'arborescence des répertoires et fichiers, à partir d'un répertoire initial.

On saisit le répertoire initial dans le EDIT en haut, puis on clique sur Start. Après un temps d'attente variable selon le volume de l'arborescence, celle-ci s'affiche dans le MEMO, et en dernière ligne, on a le nombre d'éléments dans cette arborescence, qui correspond à la somme des fichiers et répertoires (à vérifier par click droit/propriétés sur le répertoire initial). Attention: ce programme montre les fichiers et répertoires cachés et système !

A partir de là, on peut placer des boutons dans le container de droite pour agir sur l'arborescence. On peut imaginer par exemple, de supprimer un fichier, d'exécuter un source Panoramic avec PANORAMIC.exe, d'exécuter un fichier *.bas directement avec mon astuce Exécution d'un script en Panoramic SANS compiler ! etc.

Si l'on laisse la zone du répertoire initial vide, le programme prend l'actuel répertoire par défaut. Et si l'on fait "C:", il fait tout le disque, mais ... patience !

Voici le code:
Code:


label labels : gosub labels
gosub constantes
gosub variables
gosub form0
gosub GUI
gosub initialisations

end


labels:
  label constantes, variables
  label form0, GUI, initialisations
  label folder
  label iniloop, ini1
  return
 
constantes:
  dim maxi% : maxi% = 500
  dim indent$ : indent$ = string$(100,"-")
  dim sfn$ : sfn$ = "C:\DOCUME~1\Klaus\MESDOC~1\ME87BB~1\SFN\SFN.exe"
  return

variables:
  dim no%, no1%, no_rep%, no_tree%, depth%, ptr%, f$, f1$, i%, d$
  dim cnt%(maxi%), dir$(maxi%)
  return
 
form0:
  caption 0,"Tree-View"
  width 0,1000
  height 0,800
  return
 
GUI:
  ' invisible elements
  no% = no% + 1 : open_dialog no%
 
  ' sample application program objects
  no% = no% + 1 : container no% : no1% = no% : top no%,10 : left no%,10
    width no%,950 : height no%,50 : caption no%,"Select folder"
  no% = no% + 1 : edit no% : parent no%,no1% : no_rep% = no%
    top no%,20 : left no%,10 : width no%,860
  no% = no% + 1 : button no% : parent no%,no1% : top no%,17 : left no%,880
    width no%, 50 : caption no%,"Start" : on_click no%,folder
   
  ' treeview objects
  no% = no% + 1 : container no% : no1% = no% : top no%,80 : left no%,10
    width no%,700 : height no%,650 : caption no%,"Folder tree"
  no% = no% + 1 : list no% : parent no%,no1% : no_tree% = no%
    top no%,20 : left no%,10 : width no%,680 : height no%,620
    font_name no%,"Courier"

  ' function objects


  return
 
initialisations:
  return
 
folder:
  f$ = text$(no_rep%)
  if f$="" then f$ = dir_current$
  dir_change f$
  item_add no_tree%,"Tree "+chr$(34)+f$+chr$(34)
  depth% = 0
  f$ = file_find_first$
  dir$(0) = f$

iniloop:
  if f$="_"
    if depth%>0
      depth% = depth% - 1
      file_find_close
      dir_change ".."
      f$ = file_find_first$
      if cnt%(depth%)>0
        for i%=2 to cnt%(depth%)
          f$ = file_find_next$
        next i%
      end_if
      goto iniloop
    else
      goto ini1
    end_if
  end_if

  cnt%(depth%) = cnt%(depth%) + 1
  if dir_exists(f$)=1
    depth% = depth% + 1
    f1$ = "D "+left$(indent$,depth%)+f$
    item_add no_tree%,f1$
    cnt%(depth%) = 1
    file_find_close
    dir_change f$+"\"
    dir$(depth%) = f$+"\"
    f$ = file_find_first$
  else
    f1$ = "  "+left$(indent$,depth%)+f$
    item_add no_tree%,f1$
    f$ = file_find_next$
  end_if
  goto iniloop
ini1:
  file_find_close
  item_add no_tree%,str$(count(no_tree%)-1)+" items in tree "+chr$(34)+text$(no_rep%)+chr$(34)
  return
 
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 2:27

Salut Klaus.

Excellente application.
Toutefois, j’ai quelques éclaircissements à demander :
Quelle est l’utilité de la ligne 21 : (la variable sfn$ n’est utilisée nulle part dans le programme)
Code:

dim sfn$ : sfn$ = "C:\DOCUME~1\Klaus\MESDOC~1\ME87BB~1\SFN\SFN.exe"

J’ai donné comme répertoire initial « c:\ », Le temps de réponse était si long que j’ai cru a un plantage.
J’ai ajouté alors la modification suivante :
A la 1ere ligne du sous-programme « folder : », j’ai ajouté ‘ caption 0, "Veuillez patienter" ‘ et à l’avant-dernière ligne de « init1 : », j’ai ajouté ‘caption 0,"TERMINE" ‘

Si après avoir affiché une arborescence d’un répertoire quelconque, on désire afficher une autre arborescence d’un autre répertoire, l’affichage se fait à la suite. Il est plus commode que l’affichage se fait sur une liste vierge.
J’ai ajouté un sous-programme ‘Vide_list :’
Ainsi chaque répertoire sera affiché dans une liste vierge.
Voici le code modifié : les lignes ajoutées sont suivies de ‘ Ajouté par papydall
Code:

label labels : gosub labels
gosub constantes
gosub variables
gosub form0
gosub GUI
gosub initialisations

end


labels:
  label constantes, variables
  label form0, GUI, initialisations
  label folder
  label iniloop, ini1
  LABEL vide_list : ' Ajouté par papydall
  return

constantes:
  dim maxi% : maxi% = 500
  dim indent$ : indent$ = string$(100,"-")
  dim sfn$ : sfn$ = "C:\DOCUME~1\Klaus\MESDOC~1\ME87BB~1\SFN\SFN.exe"
  return

variables:
  dim no%, no1%, no_rep%, no_tree%, depth%, ptr%, f$, f1$, i%, d$
  dim cnt%(maxi%), dir$(maxi%)
  DIM lig%,maxlig%  : ' Ajouté par papydall
  return

form0:
  caption 0,"Tree-View"
  width 0,1000
  height 0,800
  return

GUI:
  ' invisible elements
  no% = no% + 1 : open_dialog no%

  ' sample application program objects
  no% = no% + 1 : container no% : no1% = no% : top no%,10 : left no%,10
    width no%,950 : height no%,50 : caption no%,"Select folder"
  no% = no% + 1 : edit no% : parent no%,no1% : no_rep% = no%
    top no%,20 : left no%,10 : width no%,860
  no% = no% + 1 : button no% : parent no%,no1% : top no%,17 : left no%,880
    width no%, 50 : caption no%,"Start" : on_click no%,folder

  ' treeview objects
  no% = no% + 1 : container no% : no1% = no% : top no%,80 : left no%,10
    width no%,700 : height no%,650 : caption no%,"Folder tree"
  no% = no% + 1 : list no% : parent no%,no1% : no_tree% = no%
    top no%,20 : left no%,10 : width no%,680 : height no%,600
    font_name no%,"Courier"

  ' function objects


  return

initialisations:
  return

folder:
  caption 0, "Veuillez patienter"  : ' Ajouté par papydall
  gosub vide_list                  : ' Ajouté par papydall
  f$ = text$(no_rep%)
  if f$="" then f$ = dir_current$
  dir_change f$
  item_add no_tree%,"Tree "+chr$(34)+f$+chr$(34)
  depth% = 0
  f$ = file_find_first$
  dir$(0) = f$

iniloop:
  if f$="_"
    if depth%>0
      depth% = depth% - 1
      file_find_close
      dir_change ".."
      f$ = file_find_first$
      if cnt%(depth%)>0
        for i%=2 to cnt%(depth%)
          f$ = file_find_next$
        next i%
      end_if
      goto iniloop
    else
      goto ini1
    end_if
  end_if

  cnt%(depth%) = cnt%(depth%) + 1
  if dir_exists(f$)=1
    depth% = depth% + 1
    f1$ = "D "+left$(indent$,depth%)+f$
    item_add no_tree%,f1$
    cnt%(depth%) = 1
    file_find_close
    dir_change f$+"\"
    dir$(depth%) = f$+"\"
    f$ = file_find_first$
  else
    f1$ = "  "+left$(indent$,depth%)+f$
    item_add no_tree%,f1$
    f$ = file_find_next$
  end_if
  goto iniloop
ini1:
  file_find_close
  item_add no_tree%,str$(count(no_tree%)-1)+" items in tree "+chr$(34)+text$(no_rep%)+chr$(34)
  caption 0,"TERMINE"
  maxlig% = count(no_tree%) :' Ajouté par papydall
  return
' *************
'  Ajouté par papydall
 
vide_list:
lig% = count(no_tree% )
if lig% > maxlig% then maxlig% = lig%

while maxlig% > 0
  item_delete no_tree%,maxlig%
  maxlig% = maxlig% -1
end_while

return


Qu’en penses-tu ?

lol! lol!
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
papydall

papydall


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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 3:00

Si on donne un nom de répertoire bidon (comme par exemple : aaaaaaaaaaaaaaa) qui n’existe pas, le programme affiche le contenu du répertoire courant mais en mentionnant qu’il s’agit du répertoire aaaaaaaaaaaaaaa.

Un test sur le nom du répertoire est donc recommandé. Mais il est tard. Sleep

Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: +++   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 5:17

Alors là, klaus, je te le dis tout net,
c'est carrément fabuleux !
Bravo !!!
cheers alien cheers
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 7:27

Oui, vraiment très bien. Seul petit commentaire, tu aurais pu utiliser un "browser" pour choisir le répertoire d'origine, mais bon, ce n'était pas le but de ton programme par contre, il faut penser à monter maxi (perso, j'ai mis 5000 pour éviter l'index overflow)
Revenir en haut Aller en bas
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 9:55

Ca marche super.
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Klaus

Klaus


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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 11:27

@Papydall:
Merci pour tes commentaires. J'ai repris ton idée, mais j'ai simplifié l'effacement- en effet, il suffit de faire un CLEAR du mémo. Et j'ai fait un message d'attente plus technique. La variable SFN$ est un résidu de tests, et elel a été supprimée.

@Jicehel:
J'ai intégré ton idée du maxi à 5000. Ceci dit, c'est dans la section des "constantes" que chacun peut adapter à ces besoins.

Voici ce que ça donne, avec mes remerciements à tous:
Code:

label labels : gosub labels
gosub constantes
gosub variables
gosub form0
gosub GUI
gosub initialisations

end


labels:
  label constantes, variables
  label form0, GUI, initialisations
  label folder
  label iniloop, ini1
  return

constantes:
  dim maxi% : maxi% = 5000
  dim indent$ : indent$ = string$(100,"-")
  return

variables:
  dim no%, no1%, no_rep%, no_tree%, depth%, ptr%, f$, f1$, i%, d$
  dim cnt%(maxi%), dir$(maxi%)
  dim no_wait%
  return

form0:
  caption 0,"Tree-View"
  width 0,1000
  height 0,800
  return

GUI:
  ' invisible elements
  no% = no% + 1 : open_dialog no%

  ' sample application program objects
  no% = no% + 1 : container no% : no1% = no% : top no%,10 : left no%,10
    width no%,950 : height no%,50 : caption no%,"Select folder"
  no% = no% + 1 : edit no% : parent no%,no1% : no_rep% = no%
    top no%,20 : left no%,10 : width no%,860
  no% = no% + 1 : button no% : parent no%,no1% : top no%,17 : left no%,880
    width no%, 50 : caption no%,"Start" : on_click no%,folder

  ' treeview objects
  no% = no% + 1 : container no% : no1% = no% : top no%,80 : left no%,10
    width no%,700 : height no%,650 : caption no%,"Folder tree"
  no% = no% + 1 : list no% : parent no%,no1% : no_tree% = no%
    top no%,20 : left no%,10 : width no%,680 : height no%,600
    font_name no%,"Courier"

  ' function objects
  no% = no% + 1 : container no% : no1% = no% : top no%,80 : left no%,710
    width no%,250 : height no%,650 : caption no%,"Functions"

  ' message d'attente
  no% = no% + 1 : form no% : hide no% : no_wait% = no% : inactive no%
    top no%,300 : left no%,300 : height no%,150 : width no%,300
    caption no%,"TRaitement en cours..."
  no% = no% + 1 : alpha no% : parent no%,no_wait% : top no%,70 : left no%,10
    caption no%,"Veuillez patienter..." : font_color no%,255,0,0
    font_bold no% : font_italic no% : font_size no%,16

  return

initialisations:
  return

folder:
  inactive 0
  show no_wait%
  clear no_tree%
  f$ = text$(no_rep%)
  if f$="" then f$ = dir_current$
  if dir_exists(f$)=0 then f$ = dir_current$
  dir_change f$
  item_add no_tree%,"Tree "+chr$(34)+f$+chr$(34)
  depth% = 0
  f$ = file_find_first$
  dir$(0) = f$

iniloop:
  if f$="_"
    if depth%>0
      depth% = depth% - 1
      file_find_close
      dir_change ".."
      f$ = file_find_first$
      if cnt%(depth%)>0
        for i%=2 to cnt%(depth%)
          f$ = file_find_next$
        next i%
      end_if
      goto iniloop
    else
      goto ini1
    end_if
  end_if

  cnt%(depth%) = cnt%(depth%) + 1
  if dir_exists(f$)=1
    depth% = depth% + 1
    f1$ = "D "+left$(indent$,depth%)+f$
    item_add no_tree%,f1$
    cnt%(depth%) = 1
    file_find_close
    dir_change f$+"\"
    dir$(depth%) = f$+"\"
    f$ = file_find_first$
  else
    f1$ = "  "+left$(indent$,depth%)+f$
    item_add no_tree%,f1$
    f$ = file_find_next$
  end_if
  goto iniloop
ini1:
  file_find_close
  item_add no_tree%,str$(count(no_tree%)-1)+" items in tree "+chr$(34)+text$(no_rep%)+chr$(34)
  hide no_wait%
  active 0
  to_foreground 0
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 12:23

Ça, c’est du Super Klaus !

Maitre, B R A V O.

lol!
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 14:10

Bravo Klaus, bel explorateur et bel exercice de style.

Manquent plus que les options affichage des tailles, dates de création ou modification, attributs... Very Happy

Je plaisante (un peu seulement), mais pour les attributs par exemple on a toutes les fonctions pour les modifier (on ou off), mais rien pour les lire, c'est un peu absurde ?
Revenir en haut Aller en bas
Klaus

Klaus


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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 14:15

Exact, JL35. J'aimerais bien afficher les attrbuts et, pourquoi filtrer par ça, mais...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 14:28

On peut les avoir par des fonctions Dos (fonction ATTRIB), mais c'est moins élégant. Et tout de même regrettable qu'on ne les ait pas en panoramic alors qu'on peut les modifier.

J'ai un truc bizarre avec un de mes répertoires (et ton programme): la 1ère fois il affiche deux fois le 1er sous-répertoire trouvé et son contenu, puis la suite normalement (434 items), et si je relance (Start) il s'arrête chaque fois à la fin de ce même sous-répertoire (10 items) ?
1ère fois:
FILE_FIND: Arborescence des répertoires dans un mémo I1
etc.
2ème fois (re-appui sur 'Start') et suivantes:
FILE_FIND: Arborescence des répertoires dans un mémo I2

FILE_FIND: Arborescence des répertoires dans un mémo C:%5Ctemp%5Ci1
Revenir en haut Aller en bas
Klaus

Klaus


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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 15:30

@JL35:
J'ai eu ce problème ce matin. As-tu chargé la dernière version ?

En tout cas, voici une version qui compte séparément les répertoires et les fichiers, et le message d'attente est mieux placé:
Code:

label labels : gosub labels
gosub constantes
gosub variables
gosub form0
gosub GUI
gosub initialisations

end


labels:
  label constantes, variables
  label form0, GUI, initialisations
  label folder
  label iniloop, ini1
  return

constantes:
  dim maxi% : maxi% = 5000
  dim indent$ : indent$ = string$(100,"-")
  return

variables:
  dim no%, no1%, no_rep%, no_tree%, depth%, ptr%, f$, f1$, i%, d$
  dim cnt%(maxi%), dir$(maxi%)
  dim no_wait%, n_file%, n_folder%
  return

form0:
  caption 0,"Tree-View"
  width 0,1000
  height 0,800
  return

GUI:
  ' invisible elements
  no% = no% + 1 : open_dialog no%

  ' sample application program objects
  no% = no% + 1 : container no% : no1% = no% : top no%,10 : left no%,10
    width no%,950 : height no%,50 : caption no%,"Select folder"
  no% = no% + 1 : edit no% : parent no%,no1% : no_rep% = no%
    top no%,20 : left no%,10 : width no%,860
  no% = no% + 1 : button no% : parent no%,no1% : top no%,17 : left no%,880
    width no%, 50 : caption no%,"Start" : on_click no%,folder

  ' treeview objects
  no% = no% + 1 : container no% : no1% = no% : top no%,80 : left no%,10
    width no%,700 : height no%,650 : caption no%,"Folder tree"
  no% = no% + 1 : list no% : parent no%,no1% : no_tree% = no%
    top no%,20 : left no%,10 : width no%,680 : height no%,600
    font_name no%,"Courier"

  ' function objects
  no% = no% + 1 : container no% : no1% = no% : top no%,80 : left no%,710
    width no%,250 : height no%,650 : caption no%,"Functions"

  ' message d'attente
  no% = no% + 1 : form no% : hide no% : no_wait% = no% : inactive no%
    top no%,300 : left no%,300 : height no%,150 : width no%,300
    caption no%,"TRaitement en cours..."
  no% = no% + 1 : alpha no% : parent no%,no_wait% : top no%,40 : left no%,10
    caption no%,"Veuillez patienter..." : font_color no%,255,0,0
    font_bold no% : font_italic no% : font_size no%,16

  return

initialisations:
  return

folder:
  inactive 0
  show no_wait%
  pause 1
  clear no_tree%
  n_file% = 0 : n_folder% = 0
  f$ = text$(no_rep%)
  if f$="" then f$ = dir_current$
  if dir_exists(f$)=0 then f$ = dir_current$
  dir_change f$
  item_add no_tree%,"Tree "+chr$(34)+f$+chr$(34)
  depth% = 0
  f$ = file_find_first$
  dir$(0) = f$

iniloop:
  if f$="_"
    if depth%>0
      depth% = depth% - 1
      file_find_close
      dir_change ".."
      f$ = file_find_first$
      if cnt%(depth%)>0
        for i%=2 to cnt%(depth%)
          f$ = file_find_next$
        next i%
      end_if
      goto iniloop
    else
      goto ini1
    end_if
  end_if

  cnt%(depth%) = cnt%(depth%) + 1
  if dir_exists(f$)=1
    depth% = depth% + 1
    f1$ = "D "+left$(indent$,depth%)+f$
    item_add no_tree%,f1$
    n_folder% = n_folder% + 1
    cnt%(depth%) = 1
    file_find_close
    dir_change f$+"\"
    dir$(depth%) = f$+"\"
    f$ = file_find_first$
  else
    f1$ = "  "+left$(indent$,depth%)+f$
    item_add no_tree%,f1$
    n_file% = n_file% + 1
    f$ = file_find_next$
  end_if
  goto iniloop
ini1:
  file_find_close
  item_add no_tree%,str$(n_folder%)+" folders and "+str$(n_file%)+" files in tree "+chr$(34)+text$(no_rep%)+chr$(34)
  hide no_wait%
  active 0
  to_foreground 0
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: ctement même phénomène   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 15:42

J'ai bien pris la dernière version, mais j'essaie celle-ci, un moment stp.
Désolé, c'est pareil, sauf que j'ai un affichage en plus pour patienter...
Exactement le même phénomène, doublon la 1ère fois, affichage tronqué à la fin du 1er répertoire les fois suivantes.

J'ai essayé sur un autre répertoire, pareil:
- doublage du 1er sous-répertoire rencontré (mais pas les autres).
- au deuxième passage (re Start sans rien changer d'autre), arrêt à la fin du 1er sous-répertoire.
Revenir en haut Aller en bas
Klaus

Klaus


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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 18:17

C'est très bizarre. Je n'arrive pas à le reproduire chez moi. Je l'ai fait marcher sur "C:\documents and settings". Tout se passe bien, sans doublons, et voici la dernière ligne:
FILE_FIND: Arborescence des répertoires dans un mémo T510

Es-tu certain de ne pas avoir un problème avec la structure des répertoires ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 18:26

Ben.. je suis sous W7, ce sont des répertoires tout à fait ordinaires qui ne me posent aucun problème soit sous l'explorateur windows, soir sous Dos (commande DIR).

Ne te tracasse pas pour ça, je regarderai tout à l'air un peu plus avant dans ton code pour voir où ça commence à dérailler (en mettant éventuellement des points de contrôle). Je suis mieux placé que toi pour ça puisque c'est chez moi que ça déconne.

Là il va être l'heure de faire une pause...

Bon, j'arrive à le reproduire:
Je crée de toutes pièces un répertoire c:\test avec deux sous-répertoires (3lorem et 4lorem), et avec le même fichier texte partout sous des noms différents, et j'obtiens:
FILE_FIND: Arborescence des répertoires dans un mémo I1
le 1er sous-répertoire (3lorem) est bien répété deux fois. Et il est compté deux fois, et ses fichiers aussi.
Si je refais start, il n'y a plus que le premier. scratch
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 19:34

Je confirme chez moi JL35, ça fait pareil, le premier fichier s'affiche, puis le premier répertoire s'affiche 2 fois aussi avec son contenu puis la suite s'affiche au premier lancement.
La seconde fois, je n'ai que le premier fichier et le premier répertoire avec son contenu
Revenir en haut Aller en bas
JL35




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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 20:21

Bonsoir Jicehel, tu me rassures.
Bon, puisqu'on peut le reproduire, la balle est dans le camp de Klaus (on se croirait à Roland Garros).

Juste un petit programme pour créer la structure de test (C:\Test) pour faire gagner du temps à Klaus Very Happy :
Code:
DIR_MAKE "C:\Test": DIR_MAKE "C:\Test\Rep1": DIR_MAKE "C:\Test\Rep2"
FILE_OPEN_WRITE 1,"C:\Test\Fic1.txt": FILE_WRITELN 1,"abc": FILE_WRITELN 1,"123": FILE_CLOSE 1
FILE_COPY "C:\Test\Fic1.txt","C:\Test\Fic2.txt"
FILE_COPY "C:\Test\Fic1.txt","C:\Test\ZFic7.txt"
FILE_COPY "C:\Test\Fic1.txt","C:\Test\Rep1\Fic3.txt"
FILE_COPY "C:\Test\Fic1.txt","C:\Test\Rep1\Fic4.txt"
FILE_COPY "C:\Test\Fic1.txt","C:\Test\Rep2\Fic5.txt"
FILE_COPY "C:\Test\Fic1.txt","C:\Test\Rep2\Fic6.txt"
TERMINATE
Revenir en haut Aller en bas
Klaus

Klaus


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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 20:54

Merci, JL35, pour tes efforts. Je vais regarder cela de suite.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 21:06

Efforts, non, c'est un plaisir. Intéressé même.
Revenir en haut Aller en bas
Klaus

Klaus


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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 21:41

J'ai trouvé. Deux erreurs sur les indices...

Voilà la version corrigée:
Code:

label labels : gosub labels
gosub constantes
gosub variables
gosub form0
gosub GUI
gosub initialisations

end


labels:
  label constantes, variables
  label form0, GUI, initialisations
  label folder
  label iniloop, ini1
  return

constantes:
  dim maxi% : maxi% = 5000
  dim indent$ : indent$ = string$(100,"-")
  return

variables:
  dim no%, no1%, no_rep%, no_tree%, depth%, ptr%, f$, f1$, i%, d$
  dim cnt%(maxi%), dir$(maxi%)
  dim no_wait%, n_file%, n_folder%
  return

form0:
  caption 0,"Tree-View"
  width 0,1200
  height 0,800
  return

GUI:
  ' invisible elements
  no% = no% + 1 : open_dialog no%

  ' sample application program objects
  no% = no% + 1 : container no% : no1% = no% : top no%,10 : left no%,10
    width no%,950 : height no%,50 : caption no%,"Select folder"
  no% = no% + 1 : edit no% : parent no%,no1% : no_rep% = no%
    top no%,20 : left no%,10 : width no%,860
  no% = no% + 1 : button no% : parent no%,no1% : top no%,17 : left no%,880
    width no%, 50 : caption no%,"Start" : on_click no%,folder

  ' treeview objects
  no% = no% + 1 : container no% : no1% = no% : top no%,80 : left no%,10
    width no%,900 : height no%,650 : caption no%,"Folder tree"
  no% = no% + 1 : list no% : parent no%,no1% : no_tree% = no%
    top no%,20 : left no%,10 : width no%,880 : height no%,600
    font_name no%,"Courier"

  ' function objects
  no% = no% + 1 : container no% : no1% = no% : top no%,80 : left no%,910
    width no%,250 : height no%,650 : caption no%,"Functions"

  ' message d'attente
  no% = no% + 1 : form no% : hide no% : no_wait% = no% : inactive no%
    top no%,300 : left no%,300 : height no%,150 : width no%,300
    caption no%,"Traitement en cours..."
  no% = no% + 1 : alpha no% : parent no%,no_wait% : top no%,40 : left no%,10
    caption no%,"Veuillez patienter..." : font_color no%,255,0,0
    font_bold no% : font_italic no% : font_size no%,16

  return

initialisations:
  text no_rep%,"C:\test"
  return

folder:
  inactive 0
  show no_wait%
  pause 1
  clear no_tree%
  n_file% = 0 : n_folder% = 0
  f$ = text$(no_rep%)
  if f$="" then f$ = dir_current$
  if dir_exists(f$)=0 then f$ = dir_current$
  dir_change f$
  item_add no_tree%,"Tree "+chr$(34)+f$+chr$(34)
  depth% = 0
  f$ = file_find_first$
  dir$(0) = f$
  cnt%(0) = 0
iniloop:
  if f$="_"
    if depth%>0
      depth% = depth% - 1
      file_find_close
      dir_change ".."
      f$ = file_find_first$
      if cnt%(depth%)>0
        for i%=1 to cnt%(depth%)
          f$ = file_find_next$
        next i%
      end_if
      goto iniloop
    else
      goto ini1
    end_if
  end_if
  cnt%(depth%) = cnt%(depth%) + 1
  if dir_exists(f$)=1
    depth% = depth% + 1
    f1$ = "D "+left$(indent$,depth%)+f$
    item_add no_tree%,f1$
    n_folder% = n_folder% + 1
    cnt%(depth%) = 0
    file_find_close
    dir_change f$+"\"
    dir$(depth%) = f$+"\"
    f$ = file_find_first$
  else
    f1$ = "  "+left$(indent$,depth%)+f$
    item_add no_tree%,f1$
    n_file% = n_file% + 1
    f$ = file_find_next$
  end_if
  goto iniloop
ini1:
  file_find_close
  item_add no_tree%,str$(n_folder%)+" folders and "+str$(n_file%)+" files in tree "+chr$(34)+text$(no_rep%)+chr$(34)
  hide no_wait%
  active 0
  to_foreground 0
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 21:56

A première vue ça semble parfait maintenant, merci Klaus !
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 22:30

Presque parfait. Il reste un bug mineur. Si je rentre le chemin C:\test alors que test n'existe pas, il m'affiche bien le contenu de C:\Panoramic (répertoire courant), ok, mais par contre, il affiche à la fin:
152 folders and 8159 files in tree "C:\test" et là il y a arnaque puisque le répertoire n'existe pas et qu'il a pris le répertoire courant à la place Wink
(C'est facile à corriger, mais bon, du coup pour le moment, selon moi, ce n'est pas parfait Very Happy )
Revenir en haut Aller en bas
Klaus

Klaus


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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 22:41

Tu as raison, Jicehel. Voilà la correction:
Code:

label labels : gosub labels
gosub constantes
gosub variables
gosub form0
gosub GUI
gosub initialisations

end


labels:
  label constantes, variables
  label form0, GUI, initialisations
  label folder
  label iniloop, ini1
  return

constantes:
  dim maxi% : maxi% = 5000
  dim indent$ : indent$ = string$(100,"-")
  return

variables:
  dim no%, no1%, no_rep%, no_tree%, depth%, ptr%, f$, f1$, i%, d$
  dim cnt%(maxi%), dir$(maxi%)
  dim no_wait%, n_file%, n_folder%, rep$
  return

form0:
  caption 0,"Tree-View"
  width 0,1200
  height 0,800
  return

GUI:
  ' invisible elements
  no% = no% + 1 : open_dialog no%

  ' sample application program objects
  no% = no% + 1 : container no% : no1% = no% : top no%,10 : left no%,10
    width no%,950 : height no%,50 : caption no%,"Select folder"
  no% = no% + 1 : edit no% : parent no%,no1% : no_rep% = no%
    top no%,20 : left no%,10 : width no%,860
  no% = no% + 1 : button no% : parent no%,no1% : top no%,17 : left no%,880
    width no%, 50 : caption no%,"Start" : on_click no%,folder

  ' treeview objects
  no% = no% + 1 : container no% : no1% = no% : top no%,80 : left no%,10
    width no%,900 : height no%,650 : caption no%,"Folder tree"
  no% = no% + 1 : list no% : parent no%,no1% : no_tree% = no%
    top no%,20 : left no%,10 : width no%,880 : height no%,600
    font_name no%,"Courier"

  ' function objects
  no% = no% + 1 : container no% : no1% = no% : top no%,80 : left no%,910
    width no%,250 : height no%,650 : caption no%,"Functions"

  ' message d'attente
  no% = no% + 1 : form no% : hide no% : no_wait% = no% : inactive no%
    top no%,300 : left no%,300 : height no%,150 : width no%,300
    caption no%,"Traitement en cours..."
  no% = no% + 1 : alpha no% : parent no%,no_wait% : top no%,40 : left no%,10
    caption no%,"Veuillez patienter..." : font_color no%,255,0,0
    font_bold no% : font_italic no% : font_size no%,16

  return

initialisations:
  return

folder:
  inactive 0
  show no_wait%
  pause 1
  clear no_tree%
  n_file% = 0 : n_folder% = 0
  f$ = text$(no_rep%)
  if f$="" then f$ = dir_current$
  if dir_exists(f$)=0 then f$ = dir_current$
  dir_change f$
  item_add no_tree%,"Tree "+chr$(34)+f$+chr$(34)
  rep$ = f$
  depth% = 0
  f$ = file_find_first$
  dir$(0) = f$
  cnt%(0) = 0
iniloop:
  if f$="_"
    if depth%>0
      depth% = depth% - 1
      file_find_close
      dir_change ".."
      f$ = file_find_first$
      if cnt%(depth%)>0
        for i%=1 to cnt%(depth%)
          f$ = file_find_next$
        next i%
      end_if
      goto iniloop
    else
      goto ini1
    end_if
  end_if
  cnt%(depth%) = cnt%(depth%) + 1
  if dir_exists(f$)=1
    depth% = depth% + 1
    f1$ = "D "+left$(indent$,depth%)+f$
    item_add no_tree%,f1$
    n_folder% = n_folder% + 1
    cnt%(depth%) = 0
    file_find_close
    dir_change f$+"\"
    dir$(depth%) = f$+"\"
    f$ = file_find_first$
  else
    f1$ = "  "+left$(indent$,depth%)+f$
    item_add no_tree%,f1$
    n_file% = n_file% + 1
    f$ = file_find_next$
  end_if
  goto iniloop
ini1:
  file_find_close
  item_add no_tree%,str$(n_folder%)+" folders and "+str$(n_file%)+" files in tree "+chr$(34)+rep$+chr$(34)
  hide no_wait%
  active 0
  to_foreground 0
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 23:18

Maintenant Jicehel tu laisses Klaus tranquille, qu'il puisse réfléchir calmement à toutes les extensions du programme (affichage des tailles, dates, attributs, etc.) Very Happy

PS dis-donc, tu as 152 répertoires et 8159 fichiers dans ton répertoire Panoramic ???
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo EmptyVen 1 Juin 2012 - 23:54

@Klaus, correction validée Smile Tu peux passer aux extensions proposées par JL35 Wink
@ JL35 oui, vraiment, j'avais préparé des trucs, mais bon, il faut savoir rester raisonnable et se contenter de faire des programmes réalistes quand on n'y consacre que quelques heures de temps en temps.
Revenir en haut Aller en bas
Contenu sponsorisé





FILE_FIND: Arborescence des répertoires dans un mémo Empty
MessageSujet: Re: FILE_FIND: Arborescence des répertoires dans un mémo   FILE_FIND: Arborescence des répertoires dans un mémo Empty

Revenir en haut Aller en bas
 
FILE_FIND: Arborescence des répertoires dans un mémo
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» file_add dans un memo
» Sélection dans un Memo
» Position dans un MEMO
» Formattage et justification dans un MEMO
» réflexion sur return dans un memo

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