您的位置:首页 > 其它

使用7z压缩解压数据

2010-09-10 15:01 471 查看
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: