基本信息
源码名称:7Z调用实例代码
源码大小:0.28M
文件格式:.rar
开发语言:Pascal
更新时间:2020-06-21
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍
7Z调用实例代码XE3

unit Form_Main;

interface

uses
  Windows, Messages, SysUtils, Variants,
  Classes, Graphics,
  Controls, Forms, Dialogs, StdCtrls, ComCtrls;

type
  TFormMain = class(TForm)
    memoOutput: TMemo;
    btnAddFiles: TButton;
    btnCompress: TButton;
    btnExtract: TButton;
    OpenDialog: TOpenDialog;
    ProgressBar: TProgressBar;
    procedure btnAddFilesClick(Sender: TObject);
    procedure btnCompressClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnExtractClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormMain: TFormMain;

implementation

{$R *.dfm}

uses sevenzip;

function ProgressCallback(Sender: Pointer; total: boolean; value: int64)
  : HRESULT; stdcall;
begin
  if total then
    FormMain.ProgressBar.Max := value
  else
    FormMain.ProgressBar.Position := value;
  Result := S_OK;
end;

procedure TFormMain.btnAddFilesClick(Sender: TObject);
var
  Counter: Integer;
begin
  if OpenDialog.Execute() then
  begin
    for Counter := 0 to OpenDialog.Files.Count - 1 do
    begin
      memoOutput.Lines.Append(OpenDialog.Files[Counter]);
    end;
  end;
end;

procedure TFormMain.btnCompressClick(Sender: TObject);
var
  Arch: I7zOutArchive;
  Counter: Integer;
begin
  if OpenDialog.Files.Count = 0 then
  begin
    ShowMessage('请添加文件');
    Exit;
  end;
  memoOutput.Lines.Append('开始压缩');
  Arch := CreateOutArchive(CLSID_CFormat7z);
  Arch.SetProgressCallback(nil, ProgressCallback);
  for Counter := 0 to OpenDialog.Files.Count - 1 do
    Arch.AddFile(OpenDialog.Files[Counter],
      ExtractFileName(OpenDialog.Files[Counter]));
  SetCompressionLevel(Arch, 5);
  SevenZipSetCompressionMethod(Arch, m7Deflate64);
  Arch.SaveToFile('.\test.7z');
  memoOutput.Lines.Append('完成压缩');
  Arch := nil;
end;