help - ¿Usando 7-Zip de Delphi?
como descargar 7 zip (7)
Me gustaría utilizar las DLL 7-Zip de Delphi pero no he podido encontrar documentación decente o ejemplos. ¿Alguien sabe cómo usar las DLL 7-Zip de Delphi?
7 API Zip Plugin
A partir del lanzamiento 1.102, la Biblioteca de códigos JEDI tiene soporte para 7-Zip integrado en la unidad JclCompression . Aunque aún no lo he usado yo mismo.
Ampliando la respuesta de Oliver Giesen, como con muchas de las bibliotecas de códigos de 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;
Delphi ahora tiene soporte zip nativo, plataforma cruzada con TZipFile en XE2:
Cómo extraer archivos zip con TZipFile en Delphi XE2 y FireMonkey
Intenté muchas soluciones y tuve problemas, este funcionó.
Descargue https://github.com/zedalaye/d7zip Copie 7z.dll y sevenzip.pas a 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'');
Si tiene la intención de utilizar 7Zip solo para comprimir y descomprimir, eche un vistazo al componente TZip . He escrito un pequeño contenedor para mis propios fines, que puedes encontrar en el archivo Zipper.pas , puedes reutilizarlo.
Zip y 7z sin DLL, pruebe Synopse: http://synopse.info/forum/viewtopic.php?pid=163