Código: Seleccionar todo
Dim Ficheros as string[], MiPath as string, Fichero as string
MiPath=user.home
Ficheros=rdir(MiPath,"{^]*",gb.file)
for each Fichero in Ficheros
listbox.add fichero
next
Ahora bien ahí no están sus rutas ¿Que pasa si necesito también las rutas de esos archivos?
Así que he elaborado una pequeña rutina recursiva que explora cada directorio, guarda el path y el archivo de todo lo que encuentra y devuelve una tabla con todo el contenido:
Código: Seleccionar todo
Dim Ficheros as string[] ' lugar donde quedarán todos los ficheros de la ruta especificada incluyendo subdirectorios
Dim Fichero as string ' variable para cada fichero concreto de la lista anterior
Ficheros = buscar(newpath)
FOR EACH Fichero in ficheros 'añadir a un supuesto listbox todo lo encontrado
Lista.add(fichero)
NEXT
Código: Seleccionar todo
FUNCTION buscar(MiPath AS String) AS String[]
DIM Directorio AS String, Ficheros AS String[]
DIM NewPath AS String, NuevosFicheros AS String[], Contador as integer
ficheros = Dir(MiPath, "[^.]*", gb.file) 'ficheros en directorio actual se meten en array ficheros
FOR Contador = 0 TO ficheros.Max ' añadir ruta a ficheros
ficheros[Contador] = MiPath &/ ficheros[Contador]
NEXT
'Ahora examinar subdirectorios que pueda haber en MiPath
FOR EACH directorio IN Dir(MiPath, "[^.]*", gb.Directory) 'para cada directorio en directorio actual que no sea oculto
newpath = Mipath &/ directorio 'obtener nuevo path del subdirectorio
NuevosFicheros = buscar(newpath) 'buscar ficheros en el subdirectorio. Quedan en un array NuevosFicheros
Ficheros = agregardatos(Fichero, NuevosFicheros) 'Agregar los nuevos ficheros al arary donde quedan todos
NEXT
RETURN ficheros
END
Código: Seleccionar todo
FUNCTION agregardatos(A AS String[], B AS String[]) AS String[]
DIM Posicion AS Integer, Contador AS Integer
Posicion = A.Length ' Tamaño actual de A
A.Resize(Posicion + B.Length) 'Ampliar tamaño de A al tamaño que tenía mas el tamaño de B
FOR contador = posicion TO A.Max 'para cada elemento nuevo y actualmente vacío
A[contador] = B[contador - posicion] 'meter valor de B
NEXT
RETURN A
END
Código: Seleccionar todo
PRINT file.BaseName(Lista[5].text) '---> el nombre+extension del fichero
PRINT file.Dir(Lista[5].text) '---> el path del fichero
PRINT file.Ext(Lista[5].text) '---> la extensión del fichero
PRINT file.Name(Lista[5].text) '---> el nombre sin extensión del fichero