Показать сообщение отдельно
  #1  
Старый 11.08.2018, 13:01
Аватар для Aqel
Aqel Aqel вне форума
Прохожий
 
Регистрация: 08.10.2011
Адрес: Пермь
Сообщения: 13
Версия Delphi: XE8 SP1
Репутация: 10
Вопрос Распаковка определённых папок файлов из 7z (JEDI)

Есть функция - распаковывает полностью архив, а нужно что бы только опредёлённые папки и файлы:
Код:
function Decompress(FileName, DestDir: String): Boolean;      
var
  ArcClass: TJclDecompressArchiveClass;
  MyArc: TJclDecompressArchive;
  //WideString    -     Имена файлов
begin
  Decompress:= False;
  // Filename = name.7z или name.zip
  // DestDir = полный путь к существующему каталогу
  //ArcClass:= GetArchiveFormats.FindDecompressFormat(FileName);
  ArcClass:= GetArchiveFormats.FindDecompressFormat(lowercase(FileName));
  Application.ProcessMessages;
  Try
    if Assigned(ArcClass) then
      Begin
        MyArc:= ArcClass.Create(FileName);
        if (MyArc is TJclSevenZipDecompressArchive) then
          Begin
            try
              MyArc.ListFiles; { Сбой, не делая это первым }
			{ ExtractAll (AutocreateSubDir) должен быть установлен верно }
              MyArc.ExtractAll(DestDir, True);                     //ExtractSelected(DestDir, True);    !!! Полагаю надо это использовать, но как?
              Decompress:= True;
            except on E: EJclCompressionError do
              Begin
                ShowMessage(e.Message);
              End;
            end;
          End
        Else
          ShowMessage('Не поддерживаемая 7z.dll');
      End;
  Finally
    MyArc.Free;
  End;
end;

Помогите, кто шарит в JclCompression...
__________________
Всё намного проще, чем есть на самом деле...
Ответить с цитированием