Mazahaka_lab
Принятый Кодер
- Регистрация
- 25 Янв 2017
- Сообщения
- 47
- Баллы
- 50
Решил наконец свою проблему по поводу распаковки одного файла из архива . Нашёл полный модуль 7z API и чуть поправил вызов распаковки самой .
Код:
uses
SevenZipIntf
function SevenZip_ExtractFile(const aInterf: I7zInArchive; const aPath: string;
const aSavePath: string): Boolean;
var
i, indx: Integer;
fs: TFileStream;
s1, s2: string;
begin
Result := False;
indx := -1;
for i := 0 to aInterf.NumberOfItems - 1 do
begin
if (not aInterf.ItemIsFolder[i]) then
begin
s1 := LowerCase(Trim((aInterf.ItemPath[i] + aInterf.ItemName[i])));
s2 := LowerCase(Trim(aPath));
if (s1 = s2) then
begin
indx := i;
Break;
end;
end;
end;
if (indx <> -1) then
begin
try
fs := TFileStream.Create(aSavePath, fmCreate or fmOpenWrite);
try
aInterf.ExtractItem(indx, fs, False);
Result := True;
finally
FreeAndNil(fs);
end;
except
Result := False;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Zz: I7zInArchive;
begin
Zz:= CreateInArchive(CLSID_CFormat7z,'директория где лежит 7z.dll');
Zz.OpenFile('C:\1.7z'); // сам архив
//Дальше я думаю понятно:
if SevenZip_ExtractFile(Zz,'sevenzip.pas','C:\sevenzip.pas') then begin
caption:='готово' end else begin
caption:='ошибка' ;
end;
end;
Вложения
Последнее редактирование: