Используете 7-Zip от Delphi?

Я хотел бы использовать библиотеки DLL 7-Zip от Delphi, но мне не удалось найти достойную документацию или примеры. Кто-нибудь знает, как использовать библиотеки DLL 7-Zip от Delphi?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
25
0
30 012
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

Начиная с версии 1.102 Библиотека кодов JEDI имеет поддержку 7-молния, встроенную в блок JclCompression. Хотя сам еще не пользовался.

Если вы собираетесь использовать 7Zip только для архивирования и разархивирования, обратите внимание на компонент TZip. Я написал небольшую оболочку для своих целей, которую вы можете найти в файле Zipper.pas, не стесняйтесь использовать повторно.

TZip отлично работает, если каждый сжатый объект умещается в памяти. В противном случае вы окажетесь в затруднительном положении. Попробуйте создать архив размером 300 Мб, а затем заархивируйте 90 из этих архивов по 300 Мб в другой архив с помощью TZip, и вы весело проведете время.

Warren P 26.08.2010 03:21

Расширяя ответ Оливера Гизена, как и в случае с большой библиотекой кода 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;

7 API плагина Zip

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

Zip и 7z без DLL, попробуйте Synopse: http://synopse.info/forum/viewtopic.php?pid=163

Не похоже, что Synopse поддерживает 7zip, просто zip.

hikari 19.09.2014 17:06

Delphi теперь имеет встроенную кроссплатформенную поддержку zip с TZipFile в XE2:

Как распаковать zip-файлы с помощью TZipFile в Delphi XE2 и FireMonkey

Ссылка мертвая. Но это, может быть, может помочь. docwiki.embarcadero.com/Libraries/XE2/en/System.Zip.TZipFile

EMBarbosa 09.01.2013 20:16

Это не поддерживает сжатые архивы LZMA.

kbickar 12.07.2017 04:47

Я пробовал много решений, и у меня были проблемы, это сработало.

Скачать 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');

Другие вопросы по теме