ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

ADIR() récursif   



L'auteur

Anatole
France France
Membre Simple
# 0000000002
enregistré le 12/10/2004

Fiche personnelle


Note des membres
pas de note

Contributions > 01 - PRG : Programmation

ADIR() récursif
# 0000000343
ajouté le 19/07/2006 11:35:00 et modifié le 19/07/2006
consulté 8519 fois
Niveau débutant

Version(s) Foxpro :
VFP 9.0
VFP 8.0

Description

Procédure permettant de lister le contenu d'un répertoire et de ses sous-répertoires.

Code source :
*--------------------------------------------------------------------------*
*  Integer AdirRecursif(@tResults, cDir, [cAttribute], [nFlag])
*
*  Fait la même chose que adir mais en récursif.
*  La 6° colonne du tableau contient D ou F si c'est un répertoire ou un fichier.
*
*  Paramètres :
*  @tResults : tableau où seront socker les répertoires et fichiers trouvés
*  cDir : répertoire source à lister
*  cAttribute : cf. Aide ADIR()
*  nFlag : cf. Aide ADIR()
*
*  Exemple d'utilisation :
*  dimension t_fichiers(1)
*  for v_i=1 to AdirRecursif(@t_fichiers, "c:\temp\", "AHRSD", 1)
*    ?v_i, t_fichiers[v_i, 1]
*  next
function AdirRecursif(p_results[] as string @ ,;
                      p_dir       as String ,;
                      p_attribute as String ,;
                      p_flag      as Integer ,;
                      v_nb        as Integeras Integer
local v_i
local array t(1)
  if vartype(v_nb) <> "N"
    v_nb = 0
    dimension p_results(1)
    store .F. to p_results
    do case
      case vartype(p_attribute) <> "C"
        p_attribute = "D"
      case ! "D" $ p_attribute
        p_attribute = p_attribute + "D"
    endcase
    if vartype(p_flag) <> "N"
      p_flag = 0
    endif
  endif
  p_dir = addbs(p_dir)
  for v_i=1 to adir(t, p_dir + "*.*", p_attribute, p_flag)
    do case
      case inlist(t[v_i,1]".""..")
        loop
      case substr(t[v_i,5], 5, 1) == "D"
        v_nb = v_nb + 1
        dimension p_results(v_nb, 6)
        p_results[v_nb,1] = p_dir + t[v_i,1] + "\"
        p_results[v_nb,2] = t[v_i,2]
        p_results[v_nb,3] = t[v_i,3]
        p_results[v_nb,4] = t[v_i,4]
        p_results[v_nb,5] = t[v_i,5]
        p_results[v_nb,6] = "D"
        AdirRecursif(@p_results, p_dir + t[v_i,1], p_attribute, p_flag, @v_nb)
      otherwise
        v_nb = v_nb + 1
        dimension p_results(v_nb, 6)
        p_results[v_nb,1] = p_dir + t[v_i,1]
        p_results[v_nb,2] = t[v_i,2]
        p_results[v_nb,3] = t[v_i,3]
        p_results[v_nb,4] = t[v_i,4]
        p_results[v_nb,5] = t[v_i,5]
        p_results[v_nb,6] = "F"
    endcase
  next
  return v_nb
endfunc && AdirRecursif
Commentaires
Aucun commentaire enregistré ...

Publicité

Les pubs en cours :


www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3