|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [sevenzip] Как распаковать определённый файл из архива 7zip |
|
Delphi - [sevenzip] Как распаковать определённый файл из архива 7zip
|
Ветеран Сообщения: 1158 |
Профиль | Отправить PM | Цитировать
Всем привет! Есть задача распаковать определённый файл из архива 7zip. Воспользовался модулем (прикрепил к теме).
Использую функцию uses ...sevenzip, ... 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); Zz.OpenFile('C:\hidcon.7z'); if SevenZip_ExtractFile(Zz,'hidcon_x64.exe','C:\3333') then begin caption:='1' end else begin caption:='0' ; end; end; end. Решил проблему так : Новый модуль прикрепил к теме . Сам код : 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.dl'); Zz.OpenFile('C:\sevenzip.7z'); if SevenZip_ExtractFile(Zz,'sevenzip.pas','C:\sevenzip.pas') then begin caption:='готово' end else begin caption:='ошибка' ; end; end; |
|
------- Отправлено: 12:49, 03-10-2018 |
Старожил Сообщения: 391
|
Профиль | Отправить PM | Цитировать Painkiller, Подскажите, при добавлении ПАПКИ в архив использую
Для указания прогресса Как отобразить еще и прогресс упаковки каждого файла? Т.Е. одновременно 1. Общий прогресс 2. прогресс упаковки каждого файла |
Отправлено: 12:06, 24-01-2022 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Как распаковать файл формата nanddump? | Diman19 | Хочу все знать | 1 | 22-02-2018 23:53 | |
CMD/BAT - [решено] Извлечь из архива только определенную папку/определенный файл | SharkyEXE | Скриптовые языки администрирования Windows | 34 | 09-08-2017 22:34 | |
Утилита для создания/изменения 7zip SFX-архива | XXXler | Автоматическая установка Windows 2000/XP/2003 | 38 | 24-06-2017 14:23 | |
Разное - Как "спасти" файл из повреждённого архива ? | MKN | Программирование и базы данных | 1 | 03-03-2008 11:06 | |
Как распаковать файл на удаленном компе? | phpbook | Вебмастеру | 3 | 10-06-2004 22:31 |
|