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