Mazahaka_lab
Принятый Кодер
		- Регистрация
- 25 Янв 2017
- Сообщения
- 49
- Баллы
- 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;Вложения
- 
		
			
		
		
		9.7 КБ Просмотры: 0
								
									Последнее редактирование: 
								
							
						
						
	
					 
				