*----------------------------------------------------------------- * FUNCTION ASubDir(taArray, tcRoot) *----------------------------------------------------------------- * Devuelve en un array pasado por referencia todos los nombres de * archivos del directorio "tcRoot" y de todos sus subdirectorios. * Los nombres son de la forma: [Unidad]:[Directorio][Archivo] * RETORNO: Cantidad de archivos en el array. Si no encontró ningún * archivo o el directorio "tcRoot" no existe, retorna 0 (cero) * EJEMPLO DE USO: * DIMENSION laMiArray[1] * lnC = ASubDir(@laMiArray, "C:\Mis Documentos\") * FOR lnI = 1 to lnC * ? laMiArray[lnI] * ENDFOR *----------------------------------------------------------------- FUNCTION ASubDir(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 ASubDir *----------------------------------------------------------------- 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) LOOP ENDIF ENDIF taArray[ALEN(taArray)] = tcRoot + laAux[lnI, 1] DIMENSION taArray[ALEN(taArray) + 1] ENDFOR RETURN ENDFUNC
Luis María Guayán
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.