*-----------------------------------------------------------------
* FUNCTION ASubdirectorios(taArray, tcRoot)
*-----------------------------------------------------------------
* Devuelve en un array pasado por referencia todos los nombres de
* subdirectorios del directorio "tcRoot".
* Los nombres son de la forma: [Unidad]:[\Directorio][\Subdirectorio]
* RETORNO: Cantidad de subdirectorios en el array. Si no encontró ningún
* subdirectorio o el directorio "tcRoot" no existe, retorna 0 (cero)
* EJEMPLO DE USO:
* DIMENSION laMiArray[1]
* lnC = ASubdirectorios(@laMiArray, "C:\Mis Documentos\")
* ? "Cantidad de subdirectorios:", lnC
* FOR lnI = 1 to lnC
* ? laMiArray[lnI]
* ENDFOR
*-----------------------------------------------------------------
FUNCTION ASubdirectorios(taArray, tcRoot)
IF EMPTY(tcRoot)
tcRoot = SYS(5) + CURDIR()
ENDIF
DIMENSION taArray[1]
=ARecur(@taArray, tcRoot)
IF ALEN(taArray) > 1
DIMENSION taArray[ALEN(taArray) - 1]
RETURN ALEN(taArray)
ELSE
RETURN 0
ENDIF
ENDFUNC
*-----------------------------------------------------------------
* FUNCTION ARecur(taArray, tcRoot)
*-----------------------------------------------------------------
* Funcion recursiva llamada por ASubdirectorios
*-----------------------------------------------------------------
FUNCTION ARecur(taArray, tcRoot)
PRIVATE lnI, lnCant, laAux
tcRoot = ADDBS(tcRoot)
lnCant = ADIR(laAux, tcRoot + "*.", "D")
FOR lnI = 1 TO lnCant
IF "D" $ laAux[lnI, 5]
IF laAux[lnI, 1] == "." OR laAux[lnI, 1] == ".."
LOOP
ELSE
lcSubDir = tcRoot + laAux[lnI, 1]
=ARecur(@taArray, lcSubDir)
taArray[ALEN(taArray)] = ADDBS(tcRoot + laAux[lnI, 1])
DIMENSION taArray[ALEN(taArray) + 1]
LOOP
ENDIF
ENDIF
ENDFOR
RETURN
ENDFUNC
*-----------------------------------------------------------------
Luis María Guayán
6 de mayo de 2015
Retornar el nombre de todos los subdirectorios de un directorio
Función recursiva que retorna el nombre de todos los subdirectorios de un directorio pasado como parámetro.
Suscribirse a:
Comentarios de la entrada
(
Atom
)
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.