#include "ZLib.hpp"
void CompressFile( AnsiString FileName, AnsiString CompressedFileName)
{
TFileStream *FIn, *FOut;
TCompressionStream* C;
if(!FileExists(FileName)) throw Exception("File not Exist");
FIn = new TFileStream( FileName, fmOpenRead | fmShareDenyWrite );
FOut = NULL;
if (FileExists(CompressedFileName))
FOut = new TFileStream(CompressedFileName, fmOpenWrite | fmShareExclusive);
else
FOut = new TFileStream(CompressedFileName, fmCreate | fmShareExclusive);
try
{
C = new TCompressionStream(Zlib::clMax, FOut);
try
{
C->CopyFrom(FIn, 0);
}
__finally
{
delete C;
}
}
__finally
{
delete FIn;
delete FOut;
}
}
//---------------------------------------------------------------------------
void DecompressFile(AnsiString FileName, AnsiString DecompressedFileName)
{
TFileStream *FIn, *FOut;
TDecompressionStream* D;
Byte Buf[4096];
int Count;
if(!FileExists(FileName)) throw Exception("File not Exist");
FIn = new TFileStream( FileName, fmOpenRead | fmShareDenyWrite );
FOut = NULL;
if (FileExists(DecompressedFileName))
FOut = new TFileStream(DecompressedFileName, fmOpenWrite | fmShareExclusive);
else
FOut = new TFileStream(DecompressedFileName, fmCreate | fmShareExclusive);
try
{
D = new TDecompressionStream(FIn);
try
{
for(Count = 1;Count>0;)
{
Count = D->Read(Buf, sizeof(Buf));
FOut->Write(Buf,Count);
}
}
__finally
{
delete D;
}
}
__finally
{
delete FIn;
delete FOut;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(OpenDialog1->Execute() && SaveDialog1->Execute())
{
CompressFile(OpenDialog1->FileName,SaveDialog1->FileName);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(OpenDialog1->Execute() && SaveDialog1->Execute())
{
DecompressFile(OpenDialog1->FileName,SaveDialog1->FileName);
}
}
//---------------------------------------------------------------------------
|