在 Delphi 中创建 7zip 存档

Maa*_*aaz 2 delphi 7zip delphi-7

我使用 Delphi 7 的 7zip 包装器,效果很好

https://github.com/zedalaye/d7zip

它创建存档但覆盖里面已有的文件

var
  Arch: I7zOutArchive;
 begin
  Arch := CreateOutArchive(CLSID_CFormat7z);
  SetCompressionLevel(Arch, 2);
  Arch.AddFile('C:\Test.bin', 'Test.bin');
  Arch.SaveToFile('C:\Test.zip');
 end;
Run Code Online (Sandbox Code Playgroud)

它删除了保存在“Test.zip”中的所有其他文件无论如何我可以将文件保存在“Test.zip”中并在 Delphi 7 中使用此包装器编写新文件

Rem*_*eau 5

您使用的包装器不允许您更新现有存档,只能创建新存档。因此,要将文件添加到现有存档中,您必须执行以下操作:

  • 用于CreateInArchive()打开现有档案
  • 用于CreateOutArchive()创建新的临时存档
  • 将文件从输入存档复制到输出存档
  • 将文件添加到输出存档
  • 关闭两个档案
  • 用新存档替换旧存档