귀하는 손님 이십니다
로그인
회원가입
  
  델마당 공식 은행계좌
  하나은행 227-910235-83607
  예금주 이상국(운영진)
프로젝트 게시판
투표게시판
델마당소개
기초부터 활용까지! 델파이 교육 - 데브기어
 광고문의 :
자료실 자료실 입니다.
글내용 - 자료실
 오픈소스 무료 7Zip 압축 - TSevenZipVCL 0.76
번개
(서태욱)
2018-02-08 오전 11:46:27
2786회 조회


첨부파일 다운로드
SevenZipVCL_076.zip
압축율 높고 압축대비 해제속도가 빨라서 백업이나 업데이트파일 배포시 유용합니다

7za.DLL 9.20 첨부

압축/해제 UDF

Function xZip(Const pSourceFile, pDestFile_7z: String): Boolean;
// pSourceFile  : 압축대상 원본파일 ex) C:\Source\*.*
// pDestFile_7z : 생성할 압축파일명 ex) D:\DIR\archive.7z
//
// ex) xZip('C:\Source\*.*', 'D:\DIR\archive.7z'); // 전체파일
//     xZip('C:\Source\Sale.hwp', 'D:\DIR\archive.7z'); // 단일파일
//     xZip('C:\Source\uSale.pas;C:\Source\uSale.dfm', 'D:\DIR\archive.7z'); // 복수파일
Var
  SL: TStringList;
  i: Integer;
begin
  Result := True;
  SL := TStringList.Create;
  SL.Clear;
  SL.Delimiter := ';';
  SL.DelimitedText := pSourceFile;
  Cursor := crHourGlass;
  Try
    Try
      With SevenZip1 do begin
        LZMACompressStrength := ULTRA;
        LZMACompressType := LZMA;
        Files.Clear;
        AddRootDir := ExtractFiledir(SL.Strings[0]); // 압축대상 폴더 ex) C:\Source
        AddOptions := [AddRecurseDirs, AddSolid];
        For i := 0 to SL.Count - 1 do begin
          Files.AddString(SL.Strings[i]);
        end;
        SZFileName := pDestFile_7z;
        Result := (Add = 0);
      end;
    Except
      on E: Exception do Result := False;
    end;
  Finally
    SL.Free;
    Cursor := crDefault;
  end;
end;

Function xUnZip(Const pSourceFile_7z, pExtractDir: String): Boolean;
// 압축해제는 LZMA + LZMA2 지원 (7za.DLL 9.20) 
// LZMA2 멀티코어/멀티쓰레드 포맷
// pSourceFile_7z : 해제할 압축파일명 ex) D:\DIR\archive.7z
// pExtractDir    : 해제할 폴더       ex) C:\Source
//
// ex) xUnZip('D:\DIR\archive.7z', 'C:\Source');
begin
  Result := True;
  Try
    With SevenZip1 do begin
      Files.Clear;
      ExtrBaseDir := pExtractDir; // 폴더가 없으면 자동 생성
      ExtractOptions := [ExtractOverwrite];
      SZFileName := pSourceFile_7z;
      if Extract = 0 then List
      else Result := False;
    End;
  Except
    on E: Exception do Result := False;
  end;
end;