*-----------------------------------------------------------------
* 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
Menu
▼
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.
No hay comentarios.:
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.