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;
本文介绍了如何在程序中使用7z库进行文件的压缩和解压缩操作。通过添加sevenzip.pas到工程,复制7z.dll到相应目录,并提供了Encode_7z和Decode_7z两个过程,分别用于文件的压缩和解压,实现了在内存中对文件流的处理。
1万+

被折叠的 条评论
为什么被折叠?



