L'auteur
Anatole
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é 7952 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 Integer) as 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é ...
|