Adir() varios tipos de ficheros (Solucionado)

Adir() varios tipos de ficheros (Solucionado)

Postby JoseLuis » Mon Mar 27, 2023 6:58 pm

Buenas

Para seleccionar de un directorio los archivos jpg, hacemos:

Code: Select all  Expand view
Ficheros := Array( ADir( Publicas:cUnidad+"*.jpg" ) )


Pero si quiero seleccionar jpg y pdf , como lo hago?
Last edited by JoseLuis on Tue Mar 28, 2023 10:34 am, edited 1 time in total.
--------------------------
Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo


Re: Adir() varios tipos de ficheros

Postby cmsoft » Mon Mar 27, 2023 10:14 pm

Otra opcion:
Code: Select all  Expand view

#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
 
User avatar
cmsoft
 
Posts: 1285
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Adir() varios tipos de ficheros

Postby Jimmy » Tue Mar 28, 2023 5:53 am

hi,

try this CODE from HMG Forum

Code: Select all  Expand view
  aDir := HB_DirScanM( cPath, { "*.bmp", "*.jpg", "*.jpeg", "*.png", "*.gif", "*.tif", "*.tiff", "*.wmf", "*.emf" }, "", .T. )

it can recursive get all those Image Type

Code: Select all  Expand view
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: Select all  Expand view
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
User avatar
Jimmy
 
Posts: 1725
Joined: Thu Sep 05, 2019 5:32 am
Location: Hamburg, Germany

Re: Adir() varios tipos de ficheros (Solucionado)

Postby JoseLuis » Tue Mar 28, 2023 10:35 am

Muchas gracias por vuestra ayuda
--------------------------
Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 72 guests