2

在 Win7 x64 上使用 Delphi XE,拥有 Jedi 类库版本。3.45 和 7z.dll 版本。9.20,

Uses .., jclcompression;

procedure TForm1.Button1Click(Sender: TObject);
const
   an = 'C:\1.7z';
   fn = 'C:\1.txt';
var Arc: TJclCompressArchive;
    Ext: TJclCompressArchiveClass;

begin
   Ext := GetArchiveFormats.FindCompressFormat(an);
   Arc := Ext.Create(an);
   Arc.AddFile(ExtractFileName(fn), fn);
   Arc.Password:='123';

   // arc. .. compresslevel:= 0..9 (or store..ultra)
   // arc. .. compressmethod:= (lzma,lzma,bzip2,ppmd)
   // arc. .. dictionarysize:= (1 shl 1..30)
   // arc. .. comressheader:= true-false
   // arc. .. cryptalgorithm:= ??? aes256 only?
   // arc. .. threads:= 1..2
   // arc. .. cryptheader:= true-false

   Arc.Compress;

end;

如何选择上面显示的压缩选项作为带有“//”的注释?

绝地文档几乎为零,有人会遇到这样的问题吗?

使用 7z 尝试了一些不同版本的“作业”:tSevenZip、SevenZipVcl、SevenZip Api,但得出的结论是,在 Jedi 项目中使用 7z.dll 进行作业的最新版本。

4

1 回答 1

7

具体7z参数由TJcl7zCompressArchive类实现,所以这就是你必须使用的......试试类似的东西

Ext := GetArchiveFormats.FindCompressFormat(an);
if(Ext <> nil)and(Ext.InheritsFrom(TJcl7zCompressArchive))then begin
   Arc := Ext.Create(an);
   TJcl7zCompressArchive(Arc).SetCompressionLevel(9);
   TJcl7zCompressArchive(Arc).SetCompressHeader(True);
   ...
end;
于 2011-12-07T22:54:22.937 回答