Показать сообщение отдельно
  #3  
Старый 14.08.2018, 12:42
Аватар для Aqel
Aqel Aqel вне форума
Прохожий
 
Регистрация: 08.10.2011
Адрес: Пермь
Сообщения: 13
Версия Delphi: XE8 SP1
Репутация: 10
По умолчанию

Вот намудрил, но всё равно распаковывает весь архив:

Код:
function Decompress(FileName, DestDir, ArcFname: String; ArcDir: Boolean ): Boolean;
var
  ArcClass: TJclDecompressArchiveClass;
  MyArc: TJclDecompressArchive;
  Item: TJclCompressionItem;
  i: Integer;
begin
  ArcClass:= GetArchiveFormats.FindDecompressFormat(FileName);
  if not Assigned(ArcClass) then
    raise Exception.Create('Не удалось определить формат ' + FileName);
    MyArc:= ArcClass.Create(FileName);
    try
      if not (MyArc is TJclSevenZipDecompressArchive) then
        raise Exception.Create('Не поддерживаемая 7z.dll');
        MyArc.ListFiles;
        Application.ProcessMessages;
        for i:= 0 to MyArc.ItemCount - 1 do
        begin
          item:= MyArc.Items[i];
          if ArcFname = item.PackedName then
          MyArc.Items[i].Selected:= true;
        end;
        if MyArc.ItemCount > 0 then
        begin
             if ArcDir = False then MyArc.ExtractSelected(DestDir, true);
             if ArcDir then MyArc.ExtractAll(DestDir);
            //MyArc.ExtractAll(DestDir);
        end;
    finally
      MyArc.Free;
    end;

ArcFname - имя файла для распаковки
ArcDir - папка или файл (true/false)
__________________
Всё намного проще, чем есть на самом деле...
Ответить с цитированием