Hola a todos!
Estoy intentando desarrollar una funcion tree para poder listar las carpetas y subcarpetas de una unidad a partir de un path.
驴alguien tiene algun ejemplo de tree?
FWH 8.04 2008
Hola a todos!
Estoy intentando desarrollar una funcion tree para poder listar las carpetas y subcarpetas de una unidad a partir de un path.
驴alguien tiene algun ejemplo de tree?
Javier,
Revisa samples\TestTree.prg
Ok Antonio, lo voy a revisar y te comento.
Un saludo.
Antonio,
Lo he estado mirando. Pero no se como me puede ayudar esto a sacar un arbol de directorios de c: por ejemplo.
No veo que tenga ningun metodo recursivo que valla explorando el path, o algo parecido a lo que hacia el TREE del msdos.
una ayudita? ![]()
oK.
Creo que ya estoy en el camino.
gracias de todos modos Antonio.
![]()
static function fPrueba( cPath )
local x
local aFiles := directory( cPath + '\*.*', 'D' )
local nFilCount := len( aFiles )
local cTxt := ""
for x := 1 to nFilCount
if aFiles[ X, F_NAME ] <> '..'
cMemo += cPath + aFiles[ X, F_NAME ] + CRLF
endif
if 'D' $ aFiles[ X, F_ATTR ]
if aFiles[ X, F_NAME ] <> '.'
fPrueba( cPath + '\' + aFiles[ X, F_NAME ]
endif
endif
next
return nilstatic function fPrueba( cPath )
local x
local aFiles := Iif( SubStr( AllTrim( cPath ), Len( cPath ), 1 ) = "\",;
directory( cPath + '*.*' , 'D' ),;
directory( cPath + '\*.*', 'D' ) )
local nFilCount := len( aFiles )
for x := 1 to nFilCount
if 'D' $ aFiles[ X, F_ATTR ]
if aFiles[ X, F_NAME ] <> '.'
if SubStr( AllTrim( cPath ), Len( cPath ), 1 ) = "\"
fPrueba( cPath + aFiles[ X, F_NAME ] )
else
fPrueba( cPath + '\' + aFiles[ X, F_NAME ] )
endif
endif
endif
next
oGetMemo:cText += cPath + CRLF // := cDir
oGetMemo:Refresh()
return nilJavier,
Prueba a hacer una llamada a SysRefresh() desde esa funci贸n para que Windows pueda ir procesando sus mensajes pendientes.
Comentarte que tienes la funci贸n cGetDir() que automaticamente te permite seleccionar un directorio, por si te sirve.
static function fPrueba( cPath )
local x
local aFiles := Iif( SubStr( AllTrim( cPath ), Len( cPath ), 1 ) = "\",;
directory( cPath + '*.*' , 'D' ),;
directory( cPath + '\*.*', 'D' ) )
local nFilCount := len( aFiles )
for x := 1 to nFilCount
if 'D' $ aFiles[ X, F_ATTR ]
if aFiles[ X, F_NAME ] <> '.'
if SubStr( AllTrim( cPath ), Len( cPath ), 1 ) = "\"
fPrueba( cPath + aFiles[ X, F_NAME ] )
else
fPrueba( cPath + '\' + aFiles[ X, F_NAME ] )
endif
endif
endif
next
oGetMemo:cText += cPath + CRLF // := cDir
oGetMemo:Refresh()
SysRefresh()
return nil