Hola invitado         02 Sep, 2010 - 04:40
Menú principal
 
Ads
 
Patrocinadores
 
Anuncios
 
© 2009 PortalFox
Retornar el nombre de todos los subdirectorios de un directorio lecturas 3600
 Enviado por Luis María Guayán en Lunes, 06 Septiembre, 2004
Rutinas Función recursiva que retorna el nombre de todos los subdirectorios de un directorio pasado como parámetro.

Retornar el nombre de todos los subdirectorios de un directorio

Luis María Guayán Por Luis María Guayán, Tucumán, Argentina


*-----------------------------------------------------------------
* 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
*-----------------------------------------------------------------
NOTA: Esta función es una modificación de la función publicada en PortalFox en el siguiente artículo: -- Cómo buscar el nombre de todos los archivos de un directorio y sus subdirectorio -- http://www.portalfox.com/article.php?sid=58
 Versión imprimible  
Retornar el nombre de todos los subdirectorios de un directorio | Entrar/Crear una cuenta | 0 Comentarios
Los comentarios son propiedad de sus respectivos autores.
No somos responsables de su contenido.



Todas las marcas y los logos utilizados en este sitio son propiedad de sus respectivos dueños.
Los artículos, noticias y comentarios son propiedad y responsabilidad de sus respectivos autores.
Copyright © 2000-2010 PortalFox. Todos los derechos reservados.