Pregunta

Me gustaría utilizar las DLL 7-Zip de Delphi pero no he podido encontrar documentación ni ejemplos decentes.¿Alguien sabe cómo utilizar las DLL 7-Zip de Delphi?

¿Fue útil?

Solución

A partir de la versión 1.102 el Biblioteca de códigos JEDI tiene soporte para 7 cremalleras construido en el JclCompresión unidad.Aunque todavía no lo he usado.

Otros consejos

Ampliando la respuesta de Oliver Giesen, como ocurre con gran parte de la biblioteca de códigos JEDI, no pude encontrar ninguna documentación decente, pero esto funciona para mí:

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;

7 API del complemento Zip

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

Zip y 7z SIN DLL, pruebe Synopse:http://synopse.info/forum/viewtopic.php?pid=163

Delphi ahora tiene soporte zip nativo multiplataforma con TZipFile en XE2:

Cómo extraer archivos zip con TZipFile en Delphi XE2 y FireMonkey

Si tiene intención de utilizar 7Zip sólo para comprimir y descomprimir, consulte la TZip componente.He escrito un pequeño envoltorio para mis propios fines, que puedes encontrar en el Cremallera.pas archivo, no dude en reutilizarlo.

Probé muchas soluciones y tuve problemas, esta funcionó.

Descargar https://github.com/zedalaye/d7zipCopie 7z.dll y sevenzip.pas al directorio de su proyecto y agregue Sevenzip.pas a su proyecto.

Entonces puedes usar esto para descomprimir:

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;

Uso:

Unzip7zFile(ExtractFilePath(Application.ExeName) + 'STR_SI_FULL_1000420.7z');
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top