Por: Fernando D. Bozzo
Esto parece que es algo bastante solicitado, así que ahí va, lista para usar en una librería de procedimientos PRG.
Solo requiere indicar el directorio, un array por referencia y una variable por referencia para devolver la información.
*-- USO: Suponiendo que se copie en LIB.PRG
SET PROCEDURE TO lib.prg
DIMENSION aFiles(1,1)
nCount = 0
get_FilesFromDirectory( "C:\DESA\Plastic\", @aFiles, @nCount)
? nCount
PROCEDURE get_FilesFromDirectory
LPARAMETERS tcDir, taFiles, lnFileCount
EXTERNAL ARRAY taFiles
LOCAL laFiles(1), I, lnFiles
IF TYPE("ALEN(laFiles)") # "N" OR EMPTY(lnFileCount)
lnFileCount = 0
DIMENSION taFiles(1)
ENDIF
tcDir = ADDBS(tcDir)
IF DIRECTORY(tcDir)
lnFiles = ADIR( laFiles, tcDir + '*.*', 'D', 1)
*-- Busco los archivos
FOR I = 1 TO lnFiles
IF SUBSTR( laFiles(I,5), 5, 1 ) == 'D'
LOOP
ENDIF
lnFileCount = lnFileCount + 1
DIMENSION taFiles(lnFileCount)
taFiles(lnFileCount) = tcDir + laFiles(I,1)
ENDFOR
*-- Busco los subdirectorios
FOR I = 1 TO lnFiles
IF NOT SUBSTR( laFiles(I,5), 5, 1 ) == 'D' ;
OR LEFT(laFiles(I,1), 1) == '.'
LOOP
ENDIF
get_FilesFromDirectory( tcDir + laFiles(I,1), ;
@taFiles, @lnFileCount )
ENDFOR
ENDIF
ENDPROC
Saludos!
Fernando...idolo... excelente contribución.
ResponderEliminarSaludos desde Paraguay.