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

Вот код на основе sevezip.pas
Код:
uses
...sevenzip, ...
 
function ProgressCallback(sender: Pointer; total: boolean; value: int64): HRESULT; stdcall;
 begin
   if total then
     Form1.sprgrsbr1.Max:= value
   else
     Form1.sprgrsbr1.Position:= value;
   Result:= S_OK;
 end;
 
function Decompress(FileName, DestDir, ArcFname: String; ArcDir: Boolean ): Boolean;
var
  i: Integer;
  ItP: string;
  items: array[1..11] of Cardinal;
  sprgrsbr1: TsProgressBar;
begin
  Result:= False;
  Application.ProcessMessages;
  try
  with CreateInArchive(CLSID_CFormat7z) do
    begin
      OpenFile(FileName);
      SetProgressCallback(sprgrsbr1, ProgressCallback);
      for i:= 1 to NumberOfItems - 1 do
      if not ItemIsFolder[i] then
      //ExtractItem(items[i], Steam, False);  - как ей пользоваться в душе не понимаю...
      ExtractTo(DestDir);
    end;
  finally
    Result:= True;
  end;
end;

Этот код идеально работает (лучше чем JEDI) - распаковывает архив с прогрессбаром, но вопрос распаковки определённых файлов/папок всё равно есть...

Вот файлы:
Вложения
Тип файла: zip 7Z.ZIP (341.4 Кбайт, 2 просмотров)
__________________
Всё намного проще, чем есть на самом деле...
Ответить с цитированием