Hola invitado         02 Sep, 2010 - 04:47
Menú principal
 
Ads
 
Patrocinadores
 
Anuncios
 
© 2009 PortalFox
Tamaño de un archivo lecturas 4170
 Enviado por Luis María Guayán en Miércoles, 10 Mayo, 2006
Rutinas Cuatro funciones tomadas del Grupo de Noticias de Visual FoxPro en Español que retornan el tamaño (en bytes) de un archivo.

Estas funciones son un resumen de las funciones enviadas al Grupo de Noticias de Visual FoxPro en Español por Alexander Barreto, Luis María Guayán, Esparta Palma, Carlos Alloatti y Alberto Rodriguez.

*----------------
* FUNCION N° 1
*----------------
FUNCTION FileSize(tcFileName)
#DEFINE OF_READ 0
#DEFINE OF_SHARE_DENY_NONE 64
#DEFINE HFILE_ERROR -1
#DEFINE dwordPlus 0xFFFFFFFF + 1
DECLARE INTEGER GetFileSize IN Kernel32;
INTEGER hFile,INTEGER @ lpFileSizeHigh
DECLARE INTEGER OpenFile IN Kernel32;
STRING lpFileName,STRING @ lpReOpenBuff,INTEGER wStyle
DECLARE INTEGER CloseHandle IN Kernel32 INTEGER hObject
LOCAL lpReOpenBuff, hFile, lnSizeLo, lnSizeHi
lpReOpenBuff = REPLICATE(CHR(0), 250)
hFile = OpenFile(tcFilename, @lpReOpenBuff, OF_SHARE_DENY_NONE)
IF hFile # HFILE_ERROR
lnSizeHi = 0
lnSizeLo = GetFileSize(hFile, @lnSizeHi)
=CloseHandle(hFile)
RETURN (lnSizeHi * dwordPlus + lnSizeLo )
ELSE
RETURN 0
ENDIF
ENDFUNC
*----------------
* FUNCION N° 2
*----------------
FUNCTION FileSize(tcFileName)
LOCAL la(1)
IF ADIR(la,tcFileName) > 0
RETURN la(1,2)
ELSE
RETURN -1
ENDIF
ENDFUNC
*----------------
* FUNCION N° 3
*----------------
FUNCTION FileSize(tcFileName)
LOCAL lcSetComaptible, ln
lcSetCompatible = SET("Compatible")
SET COMPATIBLE ON
ln = FSIZE(tcFileName)
SET COMPATIBLE &lcSetCompatible
RETURN ln
ENDFUNC
*----------------
* FUNCION N° 4
*----------------
FUNCTION FileSize(tcFileName)
LOCAL pnHandle, pnSize
pnHandle = FOPEN(tcFileName)
pnSize = FSEEK(pnHandle,0,2)
=FCLOSE(pnHandle)
RETURN pnSize
ENDFUNC

Luego de probarlas con un gran número de nombres de archivos, la Función N° 2 es las mas rápida: 4 veces mas rápida que las Funciones N° 3 y N° 4; y 10 veces mas rápida que la Función N° 1. Si a la Función N° 1 se le quita las declaraciones de las funciones de la API de Windows (se las declara afuera de la función y por única vez), la Función N° 2 es solo 2 veces mas rápida que esta opción.


 Versión imprimible  
Tamaño de un archivo | Entrar/Crear una cuenta | 1 Comentario
Los comentarios son propiedad de sus respectivos autores.
No somos responsables de su contenido.

Re: Tamaño de un archivo


por hquinones3 en 14 May, 2006 - 02:45
(Información del usuario  | Enviar un mensaje http://)
Excelente, lo necesitaba para transferir archivos a un Disket, pero a su vez deberia grabar una tabla (cursor) activo y pude complementarlo.
SELECT MiAlias
gnTableHead = HEADER( )
gnFileSize = gnTableHead + (RECSIZE( ) * RECCOUNT( ) + 1)




Todas las marcas y los logos utilizados en este sitio son propiedad de sus respectivos dueños.
Los artículos, noticias y comentarios son propiedad y responsabilidad de sus respectivos autores.
Copyright © 2000-2010 PortalFox. Todos los derechos reservados.