FoxPro/Visual FoxPro - COMPRIMIR FICHEROS!!!

 
Vista:

COMPRIMIR FICHEROS!!!

Publicado por Juan (230 intervenciones) el 02/01/2007 15:19:16
Hola, alguien sabe decirme como puedo hacer desde foxpro para que me comprima en un zip, un directorio que yo le diga y sus directorios con sus correspondientes archivos, hay ejemplos pero solo de comprimir ficheros y si hay subdirectorios que.

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:COMPRIMIR FICHEROS!!!

Publicado por Ernesto Hernandez (4623 intervenciones) el 02/01/2007 17:04:24
Primero obten el , Get zLib (especificamente,el Win32 zLib.DLL en http://www.winimage.com/zLibDll/zlib114dll.zip) and ponlo en el directorio de tu aplicacion.
y luego prueba el siguiente procedimiento

PROCEDURE zLib
PARAMETER cFunc, cStr
DO CASE
CASE upper(cFunc)='COMPRESS'
RETURN CompressIt(cStr)
CASE upper(cFunc)='UNCOMPRESS'
RETURN UnCompressIt(cStr)
ENDCASE
RETURN ''

Function CompressIt( InFile )
DECLARE INTEGER compress IN zlib.dll AS zlibCompress ;
STRING @ dest, INTEGER @ destLen, ;
STRING src, INTEGER srcLen
LOCAL lnSize, lcBuff, lnFinalSize
lnSize = len(InFile)
lcBuff = space( len(InFile)*1.2 )
lnFinalSize = len(lcBuff)
Res = zlibCompress( @lcBuff, @lnFinalSize, InFile, lnSize )
If Res=0 && Success
RETURN PadL( alltrim(str(lnSize)), 15, '0' ) + Left( lcBuff, lnFinalSize )
endif
RETURN ''

****************************************************************************
FUNCTION UnCompressIt( zLibFile )
DECLARE INTEGER uncompress IN zlib.dll AS zlibUnCompress ;
STRING @ dest, INTEGER @ destLen, ;
STRING src, INTEGER srcLen
LOCAL lnSize, lcBuff, lnFinalSize
lnSize = len(zLibFile)
lnFinalSize = Val( Left( zLibFile, 15 ) )
lcBuff = space( lnFinalSize )
zLibFile = SubStr( zLibFile, 16 )
Res = zlibUnCompress( @lcBuff, @lnFinalSize, zLibFile, lnSize )
If Res=0 && Success
RETURN lcBuff
endif
RETURN ''
********************************************************

Now, you can use it in either of these manners:

SET PROCEDURE TO zLib ADDITIVE
x = CompressIt( FileToStr("testfile.txt") )
y = UnCompressIt( x )
StrToFile( y, "testfile.txt.out" )
RELEASE PROCEDURE zLib

** OR **

x = zLib("CompressIt", FileToStr("testfile.txt") )
y = zLib("UnCompressIt", x )
StrToFile( y, "testfile.txt.out" )

SET PROC TO (srcDrv+"\source\las\zLib") ADDITIVE


Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar