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