FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Adir() varios tipos de ficheros (Solucionado)
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
Adir() varios tipos de ficheros (Solucionado)
Posted: Mon Mar 27, 2023 06:58 PM
Buenas

Para seleccionar de un directorio los archivos jpg, hacemos:
Code (fw): Select all Collapse
 Ficheros := Array( ADir( Publicas:cUnidad+"*.jpg" ) )
Pero si quiero seleccionar jpg y pdf , como lo hago?
--------------------------

Saludos



Jose Luis
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Adir() varios tipos de ficheros
Posted: Mon Mar 27, 2023 10:14 PM
Otra opcion:
Code (fw): Select all Collapse
#include "FiveWin.ch"
function Main()  
    local ficheros := {}
    // Con todos los datos del fichero
    AEval(Directory(".\*.jpg"), {|x| Aadd(ficheros,x)})
    AEval(Directory(".\*.pdf"), {|x| Aadd(ficheros,x)})
    xbrowse(ficheros)
    // Solo el nombre del fichero
    AEval(Directory(".\*.jpg"), {|x| Aadd(ficheros,x[1])})
    AEval(Directory(".\*.pdf"), {|x| Aadd(ficheros,x[1])})
    xbrowse(ficheros)
return nil
Posts: 1772
Joined: Thu Sep 05, 2019 05:32 AM
Re: Adir() varios tipos de ficheros
Posted: Tue Mar 28, 2023 05:53 AM
hi,

try this CODE from HMG Forum
Code (fw): Select all Collapse
   aDir := HB_DirScanM( cPath, { "*.bmp", "*.jpg", "*.jpeg", "*.png", "*.gif", "*.tif", "*.tiff", "*.wmf", "*.emf" }, "", .T. )
it can recursive get all those Image Type
Code (fw): Select all Collapse
FUNCTION hb_DirScanM( cPath, aFileMask, cAttr, lrecursiv )
RETURN hb_DoScanM( hb_DirSepAdd( hb_defaultValue( cPath, "" ) ), ;
                   IIF( HB_ISARRAY( aFileMask ), aFileMask, IIF( HB_ISSTRING( aFileMask ), { aFileMask }, { hb_osFileMask() } ) ), ;
                   hb_defaultValue( cAttr, "" ), ;
                   hb_ps(), lrecursiv )
Code (fw): Select all Collapse
STATIC FUNCTION hb_doScanM( cPath, aMask, cAttr, cPathSep, lrecursiv )
LOCAL aFile
LOCAL lMatch
LOCAL aResult := {}

   DEFAULT lrecursiv := .T.

   FOR EACH aFile IN hb_vfDirectory( cPath + hb_osFileMask(), cAttr + IF( lrecursiv, "D", "" ) )
      lMatch := .F.
      AEVAL( aMask, { | x | IIF( HB_ISSTRING( x ), lMatch := hb_FileMatch( aFile[ F_NAME ], x ) .OR. lMatch, Nil ) } )
      IF "D" $ aFile[ F_ATTR ]
         IF lMatch .AND. "D" $ cAttr
            IF lrecursiv = .T.
               AADD( aResult, aFile )
            ENDIF
         ENDIF
         IF !( aFile[ F_NAME ] == "." .OR. aFile[ F_NAME ] == ".." .OR. aFile[ F_NAME ] == "" )
            AEVAL( hb_DoScanM( cPath + aFile[ F_NAME ] + cPathSep, aMask, cAttr, cPathSep ), ;
                   { | x | x[ F_NAME ] := aFile[ F_NAME ] + cPathSep + x[ F_NAME ], ;
                   AADD( aResult, x ) } )
         ENDIF
      ELSEIF lMatch
         AADD( aResult, aFile )
      ENDIF
   NEXT

RETURN aResult
greeting,

Jimmy
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
Re: Adir() varios tipos de ficheros (Solucionado)
Posted: Tue Mar 28, 2023 10:35 AM

Muchas gracias por vuestra ayuda

--------------------------

Saludos



Jose Luis

Continue the discussion