예를 들어 'D:\\Temp\'를 Temp.zip으로 압축하고 그것을 다시 Temp라는 이름의 폴더로 압축을 풀려고 하는데. 어떻게 해야 할 지 말씀좀 해주세요.
제가 지금 델파이 7을 사용하고 있어서 delzip은 사용할 수가 없다구 하더라구요.
찾은거중에.. STCabWriter1CabinetStatus, STCabReader1CabinetInfo라는 컴포넌트를 찾기는 찾았는데 어떻게 사용해야 할지를 모르겠네요. Zlib도 봤지만 이것 또한 어떻게 사용해야 하는지 모르겠습니다.
참고할 자료나 방법이나 예제 소스 좀 부탁드리겠습니다.
DELZIP을 사용예제
{******************************************************************************
기능 : 파일압축함수
input : 대상 디렉토리,압축할 파일,생성될 압축파일
output : 하나라도 압축된 것이 있으면 True
example: W_Zip('c:\Temp\','*.txt','C:\Temp\All.Zip');
******************************************************************************}
function W_Zip(cS_Path,cS_File,cZ_File :String):Boolean;
var
SearchRec : TSearchRec;
ZipMaster : TZipMaster;
begin
Result := True;
if Not DirectoryExists(cS_Path) then
begin
// 디렉토리를 확인한다.
Result := False;
Exit;
end;
ZipMaster := TZipMaster.Create(nil);
ZipMaster.Load_Zip_Dll;
ZipMaster.AddCompLevel := 9;
ZipMaster.AddOptions := [AddFreshen,AddUpdate];
// 압축할 파일명 지정
ZipMaster.ZipFilename := cZ_File;
// 압축대상 파일명 크리어
ZipMaster.FSpecArgs.Clear;
// 파일을 압축대상에 추가
if (FindFirst(cS_Path+cS_File,faAnyFile ,SearchRec) = 0) then
Begin
ZipMaster.FSpecArgs.Add(cS_Path + SearchRec.Name);
While (FindNext(SearchRec) = 0) Do
Begin
ZipMaster.FSpecArgs.Add(cS_Path + SearchRec.Name);
end;
end;
FindClose(SearchRec);
// 압축기 작업
with ZipMaster do
begin
Verbose:=True;
Trace:=False;
AddOptions:=[];
try
Add;
except
fn_MYes('Error','오류가 발생 하였습니다! ');
Result := False;
end;
end;
ZipMaster.Unload_Zip_Dll;
ZipMaster.Destroy;
end;
{******************************************************************************
기능 : W_UNZIP 에서 호출하는 함수 (하나의 ZIP 파일을 해체한다
input :
output :
example: W_UnZip('c:\Temp\','test.zip','C:\Temp\');
******************************************************************************}
function W_UnZip(cS_Path,cS_File,Ds_Path :String):Boolean;
var
ZipMaster : TZipMaster;
SavePath : String;
begin
// Extract 후 현재의 PATH가 ExtrBaseDir 로 변경 되기 때문에
// 이것을 해결하기 위해 현재의 위치를 저장한다.
Getdir(0,SavePath);
Result := True;
ZipMaster := TZipMaster.Create(nil);
ZipMaster.Load_Unz_Dll;
ZipMaster.ExtrBaseDir := dS_Path;
// 압축할 파일명 지정
ZipMaster.ZipFilename := cS_Path+cS_File;
// 압축기 작업
with ZipMaster do
begin
Verbose := True;
Trace := False;
try
ZipMaster.Extract;
except
fn_MYes('Error','오류가 발생 하였습니다! ');
Result := False;
end;
end;
chDIR(SavePath);
ZipMaster.Unload_Unz_Dll;
ZipMaster.Destroy;
end;
{******************************************************************************
기능 : 파일압축해제 함수
input : 디렉토리,압축 파일,압축파일할 디렉토리
output : 하나라도 압축해제된 것이 있으면 True
example: W_Zip('c:\Temp\','*.Zip','C:\Temp\');
******************************************************************************}
function W_CUnZip (cS_Path,cS_File,dS_Path :String):Boolean;
var
SearchRec : TSearchRec;
begin
Result := True;
// 파일을 압축대상에 추가
if (FindFirst(cS_Path+cS_File,faAnyFile ,SearchRec) = 0) then
Begin
W_UnZip(cS_Path,SearchRec.Name,dS_Path);
While (FindNext(SearchRec) = 0) Do
Begin
W_UnZip(cS_Path,SearchRec.Name,dS_Path);
end;
end;
FindClose(SearchRec);
end;