使用7z压缩解压数据

来源:互联网 发布:淘宝分享有礼在哪里看 编辑:程序博客网 时间:2024/05/01 22:21

1、下载sevenzip.pas,添加到lib路径

2、把7z.dll复制到你工程的目录下

3、例子代码

procedure Encode_7z( Source:TStream;Dest:TStream );
var
  Arch: I7zOutArchive;
  tmsStream:TMemoryStream;
begin
  Arch := CreateOutArchive(CLSID_CFormat7z);
  Arch.AddStream( Source,  soReference, faArchive, CurrentFileTime, CurrentFileTime, '1.bmp', false, false);
  SetCompressionLevel(Arch, 5);
  Arch.SaveToStream(Dest);
end;

procedure Decode_7z( Source:TStream;Dest:TStream );
var
  i:Integer;
 tmsStream:TMemoryStream;
begin
 with CreateInArchive(CLSID_CFormat7z) do
 begin
   OpenStream( T7zStream.Create( Source,soReference ) );
   for i := 0 to NumberOfItems - 1 do
     if not ItemIsFolder[i] then
       ExtractItem(i, Dest, false);
  end;
end;


//压缩
procedure TForm1.btn1Click(Sender: TObject);
var
  tfsStream:TFileStream;
  tmsStream:TMemoryStream;
begin
  tfsStream:=TFileStream.Create('f:/1.bmp',fmOpenRead);
  tmsStream:=TMemoryStream.Create;
  Encode_7z(tfsStream,tmsStream);
  tmsStream.SaveToFile('d:/1.dat.7z');
  tfsStream.Free;
  tmsStream.free;


end;

procedure TForm1.btn2Click(Sender: TObject);
var
  tfsStream:TFileStream;
 tmsStream:TMemoryStream;
begin
  tfsStream:=TFileStream.Create('d:/1.dat.7z',fmOpenRead);
  tmsStream:=TMemoryStream.Create;
  Decode_7z(tfsStream,tmsStream);
  tmsStream.SaveToFile('d:/1.bmp');
  tfsStream.Free;
  tmsStream.free;


end;

原创粉丝点击