Clarion
 

Tips and tricks.
Como accesar la lista de archivos o directorios mediante la instrucción DIRECTORY?

 
 

Tips and tricks

En algunas ocasiones es necesario obtener el directorio de archivos de alguna(s) carpeta(s) en especial para mostrarla en una pantalla de consulta o bien para procesar dicha información para diversos fines, Clarion nos da la posibilidad de accesar la lista de archivos o directorios mediante la instrucción DIRECTORY, la cual nos permite almacenar el nombre corto y largo de los archivos, fecha y hora de creación, tamaño y otros atributos en un QUEUE el cual podrá por ejemplo desplegarse en una LISTA de una ventana.

Entendamos primero la sintaxis de la instrucción DIRECTORY:

DIRECTORY( queue, path, attributes )

Donde :

queue : (queue) es la estructura de datos donde se almacenará la lista de archivos del directorio indicado.

El queue indicado en este parámetro debe seguir una estructura predefinida, dicha estructura se encuentra definido en el archivo EQUATES.CLW el cual normalmente se encontrará en el directorio LIBSRC de nuestro directorio del lenguaje clarion, (ejemplo: C:\C55\LIBSRC). Así pues este queue puede definirse por ejemplo en los embedds de datos indicando entre paréntesis el tipo FILE:queue:

FILE:queue es una definición TYPE que como se mencionó se encuentra en EQUATES.CLW y no es necesario definir nuevamente:

FILE:queue QUEUE,PRE(File),TYPE

name STRING(FILE:MAXFILENAME) !FILE:MAXFILENAME is an EQUATE

shortname STRING(13)

date LONG

time LONG

size LONG

attrib BYTE !A bitmap, the same as the attributes EQUATEs

END 

Otra forma de declarar este queue es directamente en la interface de declaración de datos, esta es recomendable si se desea desplegar directamente dicho queue en una lista de una ventana por ejemplo así será fácil seleccionar cada uno de los campos a incluir en la lista, para ello es necesario incluir cada una de las columnas a desplegar en el queue según la Figura 1, los campos:

 

 

 

 

QAR:NombreLargo String(255)
QAR:NombreCorto String(13)
QAR:Fecha Long

QAR:Hora Long

QAR:Tamano Long
QAR:Atributos Byte

 

 

 

 

 

 
 
 
 
Fig. 1

path : (string) El segundo parámetro es el nombre del directorio y ti pos de archivos que se obtendrán, ejemplo: ‘C:\MisDatos\*.Txt’, si se indica solo ‘*.*’ se obtendrá la lista de archivos del directorio en el cual se encuentre la aplicación en ese instante.

attributes : (integer) es una constante que indica aquellos archivos ó directorios los cuales se integrarán en el queue, existe igualmente en EQUATES.CLW un listado de atributos disponibles a incluir los cuales son:

 

ff_:NORMAL EQUATE(0) !Always active

ff_:READONLY EQUATE(1) !Not for use as attributes parameter

ff_:HIDDEN EQUATE(2)

ff_:SYSTEM EQUATE(4)

ff_:DIRECTORY EQUATE(10H)

ff_:ARCHIVE EQUATE(20H) ! NOT Win95 compatible

 

Si se desean combinar varios se suman unos a otros, ejemplo: ff_:NORMAL + ff_:READONLY

Aplicación Ejemplo:

Fig. 2

El ejemplo de la figura 2 utiliza la instrucción DIRECTORY para mostrar la lista de archivos de la carpeta indicada en el renglón DIRECTORIO, para lograr lo anterior en algún APP se requiere:

1-Crear una ventana.

2-Declarar la estructura de datos para almacenar los archivos (Ver figura 1), de igual forma es necesario incluir la declaración del campo directorio que para nuestro ejemplo es un string de 255 caracteres.

3-Se incluye en la ventana un control tipo lista y se agregan como columnas cada uno de los campos declarados en el queue.

4-En las propiedades de la lista será necesario indicar en el atributo ‘From’ el nombre del queue declarado:

Fig. 3

5-Por último en el embedd Accepted del campo de directorio incluir el siguiente código…

 

! Obtén directorio si procede...

FREE(QUE:Archivos) ! Importante limpiar queue de consultas anteriores…

IF CLIP(LOC:Directorio) THEN

DIRECTORY(QUE:Archivos, CLIP(LOC:Directorio) & '\*.*', ff_:DIRECTORY)

END

SELECT(?List1)

NOTA: Este código podría colocarse de igual forma en el accepted del LookupFile si se utilizó el template DOSFileLookupFile (El cual veremos en futuras revisiones)

 

Póngase en contacto con Nosotros.
Gopac, Soluciones Integrales.
Av. Cubilete No. 800-11,
Col. Chapalita, Zapopan, Jal. CP. 45040.
Tel: (0133) 3122 1947 Fax: (0133) 3121 4989.
ventas@gopac.com.mx
www.gopac.com.mx
Si consideras que este correo es interesante o importante para otra persona te invitamos a que se lo envíes. Gracias.