我想使用Delphi的7-Zip DLL但无法找到合适的文档或示例。 有谁知道如何使用Delphi的7-Zip DLL?

===============>>#1 票数:27 已采纳

从版本1.102开始, JEDI代码库支持内置于JclCompression单元的7-Zip 但是,我还没有用过它。

===============>>#2 票数:22

扩展了Oliver Giesen的答案,就像许多JEDI代码库一样,我找不到任何体面的文档,但这对我有用:

uses
   JclCompression;

procedure TfrmSevenZipTest.Button1Click(Sender: TObject);
const
   FILENAME = 'F:\temp\test.zip';
var
   archiveclass: TJclDecompressArchiveClass;
   archive: TJclDecompressArchive;
   item: TJclCompressionItem;
   s: String;
   i: Integer;
begin
   archiveclass := GetArchiveFormats.FindDecompressFormat(FILENAME);

   if not Assigned(archiveclass) then
      raise Exception.Create('Could not determine the Format of ' + FILENAME);

   archive := archiveclass.Create(FILENAME);
   try
      if not (archive is TJclSevenZipDecompressArchive) then
         raise Exception.Create('This format is not handled by 7z.dll');

      archive.ListFiles;

      s := Format('test.zip Item Count: %d'#13#10#13#10, [archive.ItemCount]);

      for i := 0 to archive.ItemCount - 1 do
      begin
         item := archive.Items[i];
         case item.Kind of
            ikFile:
               s := s + IntToStr(i+1) + ': ' + item.PackedName + #13#10;
            ikDirectory:
               s := s + IntToStr(i+1) + ': ' + item.PackedName + '\'#13#10;//'
         end;
      end;

      if archive.ItemCount > 0 then
      begin
//         archive.Items[0].Selected := true;
//         archive.ExtractSelected('F:\temp\test');

         archive.ExtractAll('F:\temp\test');
      end;

      ShowMessage(s);
   finally
      archive.Free;
   end;
end;

===============>>#3 票数:6

7 Zip插件API

http://www.progdigy.com/?page_id=13

===============>>#4 票数:4

Zip和7z没有DLL,试试Synopse: http ://synopse.info/forum/viewtopic.php?pid = 163

===============>>#5 票数:4

Delphi现在在XE2中使用TZipFile提供原生的跨平台zip支持:

如何在Delphi XE2和FireMonkey中使用TZipFile提取zip文件

===============>>#6 票数:1

如果您打算仅使用7Zip进行zip 和解压缩,请查看TZip组件。 我为自己的目的编写了一个小包装器,您可以在Zipper.pas文件中找到它,随时可以重用。

===============>>#7 票数:0

我尝试了许多解决方案并遇到了问题,这个问题很有效

下载https://github.com/zedalaye/d7zip将7z.dll和sevenzip.pas复制到您的项目目录中,并将sevenzip.pas添加到您的项目中。

然后你可以用它来解压缩:

using sevenzip;

procedure Unzip7zFile (zipFullFname:string);
  var
    outDir:string;
  begin
    with CreateInArchive(CLSID_CFormat7z) do
    begin  
      OpenFile(zipFullFname);
      outDir := ChangeFileExt(zipFullFname, '');
      ForceDirectories (outDir);
      ExtractTo(outDir);
    end;
  end;

用法:

Unzip7zFile(ExtractFilePath(Application.ExeName) + 'STR_SI_FULL_1000420.7z');

  ask by community wiki translate from so

未解决问题?本站智能推荐:

1回复

使用C ++ Builder中的7zip Delphi包装器

我正在尝试将“ 7za.dll”与此Delphi包装器一起使用-http://www.progdigy.com/?page_id =13 在将此代码转换为C ++和理解包装器本身方面遇到困难: 我已经制作了包装Delphi单元的附加包装器,当包含在C ++代码中时,该包装器就可以正
5回复

LZMA或7zip在Delphi

Delphi中是否有任何库来处理LZMA(或7zip)文件,包括创建自提取EXE 7zip.org中有一些源代码(c ++ java c#),但我想在delphi中使用它们 但我想要一些独立的东西(没有DLL)
1回复

是否可以恢复7zip压缩?

我的应用程序定期上传大文件。 无论大小如何,所有文件在上传到服务器之前都会被压缩。 此项目要求的一部分是在崩溃/电源故障后恢复正常,所以现在压缩是这样完成的: 大文件.bin切成N片 压缩每个切片并上传 在崩溃的情况下,我从最后一个切片中拾取。 为了优化上
1回复

2007年Delphi中的7z

我正在尝试使用JEDI JCL使用Delphi 2007压缩某些文件。 问题是我不知道为什么我总是收到此错误“ Sevenzip: Failed to load 7z.dll ” 我的代码是: 我在与Delphi项目相同的文件夹中有7z.dll。 我究竟做错了什么? 还有7z
1回复

Delphi-TSevenZipVCL中的内存泄漏

使用madhi的madExcept和组件TSevenZipVCL( http://www.rg-software.de )测试内存泄漏,它在这里报告泄漏: 即使我添加Dispose(name),也会发生泄漏,这可能是什么问题? TSevenZip单元发布在此处: http ://p
1回复

Delphi JCL 7zCompression可以在没有文件操作的情况下压缩/解压缩内存流吗?

我之前使用过TJcl7zCompressArchive / TJcl7zDecompressArchive进行存档操作。 现在我想直接压缩/解压缩内存流而无需文件操作。 但是,当看到在网上搜索JCL演示的示例时,我找不到使用该lib的方法。 我确实找到了其他工具,但压缩比似乎不如7zi
1回复

如何压缩文件夹使用lzma sdk?

http://www.7-zip.org/sdk.html 我可以使用它压缩文件,但找不到压缩文件夹的功能
2回复

使用批处理脚本和7-zip压缩文件

我有一个包含文件的文件夹: “ 1.txt” “ 2.txt” 我需要通过批处理文件将它们压缩为zip,这要归功于7-zip。 这个脚本一切正常: 我得到了包含两个文件的my_zip.rar。 问题是我需要使用执行批处理文件时的日期来命名zip文件。 所以我尝试
1回复

使用7-zip阅读档案

我试图找到一种方法来读取压缩文件的内容/文件名,解压缩文件,然后创建一个文本文件,其中包含所有解压缩文件的列表。 大多数都不是问题,但事实证明,读取和使用存档中的文件比想象的要难。 我当前的代码是... 我发现了一些资源可以提供帮助,但到目前为止没有任何工作。 找到的资源:
1回复

从VBA使用7-zip命令行

运行宏的结果是,我有一个文件夹,其中包含各种文件类型:.err,.txt,.sh,.fat .. 例如,如果我希望该宏仅压缩.fat文件,则效果很好: 在哪里(我正在尝试尽可能保持整洁): PathZipProgram-> 7zip目录 NameZipFil