Вот намудрил, но всё равно распаковывает весь архив:
Код:
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)