Tato pakovací komponenta využívá DLL knihovny FPSKCO32.DLL pro kompresi a setupapi.DLL pro dekompresi souboru. Příslušné API funkce pracují vždy jen s jedním souborem.
#INCLUDE "Main.h"
*************************************************************
* Procedura, která vrátí objekt pro pakování a rozpakování
*************************************************************
PROCEDURE GetInterface(loObj)
*@loObj - Vlastnost do které se zapíše odkaz na objekt pro pakování
loObj=CREATEOBJECT("_VFP_Archiver")
*************************************************************
* Vlastní třída pro pakování a rozpakování
*************************************************************
DEFINE CLASS _VFP_Archiver AS Custom
Name="_VFP_Archiver"
* Dekompresní metoda
PROCEDURE Decompress(loPack)
* loPack - Objekt pro rozpakování
* Pokus se zavést potřebnou funkci z DLL knihovny
IF !LoadDllFunc("DECLARE INTEGER SetupDecompressOrCopyFileA IN "+loPack.PU.D_File+" AS _Decompress STRING, STRING, INTEGER")
RETURN _PP_ProcessFailed
ENDIF
* Proveď dekompresi
RETURN IIF(_Decompress(loPack.File_S, loPack.File_D,0)#0,_PP_PAUNFailed,_PP_ErrOK)
ENDPROC
* Kompresní metoda
PROCEDURE Compress(loPack)
* loPack - Objekt pro zpakování
* Pokus se zavést potřebnou funkci z DLL knihovny
IF !LoadDllFunc("DECLARE INTEGER LcbCompressFile IN "+loPack.PU.C_File+" AS _Compress STRING, STRING, INTEGER")
RETURN _PP_ProcessFailed
ENDIF
* Komprimuje soubor zadaný soubor. Vrátí velikost vytvořeného souboru ( >0 ) nebo
* chybu ( <= 0 )
* Proveď dekompresi
RETURN IIF(_Compress(loPack.File_S, loPack.File_D,0)<=0,_PP_PAUNFailed,_PP_ErrOK)
ENDPROC
ENDDEFIN