(16-09-2021, 08:05)jsbsan escribió: Ya tengo un explorador de archivos en el sistema: CAJA, ¿para que voy a añadir más código al programa (con sus correspondientes complicaciones, limitaciones y bug..), para hacer algo que hace bien CAJA. Y cuando digo CAJA, también puedo usar otros exploradores: PCManFM, KRUSADER, DOLPHIN, etc... ¿para que reinventar la rueda?
Hola Julio, tal vez los comentarios de los compañeros no vayan en el sentido de cambiar la forma de trabajo del programa sino de agregar nuevas opciones.
Mira, por ejemplo, seria sencillo hacer un buscador de archivos con el comando find que es muy rápido, mucho mas que caja o cualquier gestor de archivos.
Por ejemplo esta función de búsqueda de archivos por tipos de extensión te devuelve inmediatamente una lista que podrías usar fácilmente en el programa.
Incluso se los usuarios podrían crear sus propias "Recetas" de búsqueda y qagregarlas al programa.
Código:
'' <b>RAD Extension.</b><br>
'' Return a files list nested in a directory using a find command
Static Public Function ScanFiles(sPath As String, ext As String[], Optional maxdepth As Integer) As String[]
Dim out As New String[]
Dim t As String
Dim ex As String
If maxdepth = Null Or maxdepth < 1 Then
maxdepth = 1
Endif
If Exist(sPath) Then
Select ext.Count
Case 0
Shell "find '" & sPath & "' -maxdepth " & CStr(maxdepth) & " -type f -printf '%p\n' 2>&1" To t
Case 1
Shell "find '" & sPath & "' -maxdepth " & CStr(maxdepth) & " -type f -name '*.'" & ext[0] & " -printf '%p\n' 2>&1" To t
Case Else
ex = "\\( -name \"*."
ex &= ext.Join("\" -o -name \"*.")
ex &= "\" \\)"
Shell "find '" & sPath & "' -maxdepth " & CStr(maxdepth) & " -type f " & ex & " -printf '%p\n' 2>&1" To t
End Select
out = Split(t, "\n")
If out.Count > 0 Then
If out[out.Max] = "" Then
out.Remove(out.Max, 1)
Endif
Endif
Endif
Return out
End
Gracias por compartir el programa.
Saludos.