• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Помощь в коде sevenzip

Статус
Закрыто для дальнейших ответов.
Mazahaka_lab Оффлайн

Mazahaka_lab

Принятый Кодер
Регистрация
25 Янв 2017
Сообщения
39
Симпатии
17
Баллы
50
#1
Всем привет! Есть задача распаковать определённый файл из архива 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.
И получаю всегда 0 . Ничего не распаковывает. Где я ошибся ?
 

Вложения

Последнее редактирование:
Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,146
Симпатии
260
Баллы
155
#2
Всем привет! Есть задача распаковать определённый файл из архива 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.
И получаю всегда 0 . Ничего не распаковывает. Где я ошибся ?
Ты хочешь распаковать или что? Если распаковать то достаточно
Код:
Zz := CreateInArchive(CLSID_CFormat7z);
  Zz.OpenFile('C:\hidcon.7z');
  Zz.ExtractTo('C:\');
 
Mazahaka_lab Оффлайн

Mazahaka_lab

Принятый Кодер
Регистрация
25 Янв 2017
Сообщения
39
Симпатии
17
Баллы
50
#3
Ты хочешь распаковать или что? Если распаковать то достаточно
Код:
Zz := CreateInArchive(CLSID_CFormat7z);
  Zz.OpenFile('C:\hidcon.7z');
  Zz.ExtractTo('C:\');
Вы привели пример распаковки всего архива, там проблем нет, а мне нужно распаковать определённый файл из архива, функция как раз , которую я привёл должна эта делать, но увы
 
Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,111
Симпатии
213
Баллы
155
#4
так запаковуйте в архив тольто тот файл что вам нужно.
Кстате на почту которую я тебе отправил,ответа не получил,все работает?
 
Mazahaka_lab Оффлайн

Mazahaka_lab

Принятый Кодер
Регистрация
25 Янв 2017
Сообщения
39
Симпатии
17
Баллы
50
#5
так запаковуйте в архив тольто тот файл что вам нужно.
Есть задача , распаковать определённые папки с файлами или файлы из архива.
Кстате на почту которую я тебе отправил,ответа не получил,все работает?
Я только с работы приехал , там посидеть и разбираться что к чему . Код лично для меня не понятный
 
Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,111
Симпатии
213
Баллы
155
#6
Ну там больше работа с offset и риестрами,так что если по этой тиматике не когда не программировал,нужно только читать книги.
 
Mazahaka_lab Оффлайн

Mazahaka_lab

Принятый Кодер
Регистрация
25 Янв 2017
Сообщения
39
Симпатии
17
Баллы
50
#7
Ну там больше работа с offset и риестрами,так что если по этой тиматике не когда не программировал,нужно только читать книги.
Для меня это незнакомо. Да и вникать я в это не хочу. Мне нужно только получить список hdd, их порядковые номера и диски тоже
 
Mazahaka_lab Оффлайн

Mazahaka_lab

Принятый Кодер
Регистрация
25 Янв 2017
Сообщения
39
Симпатии
17
Баллы
50
#8
Как всегда вопрос решил сам. Нашёл полный модуль и переписал функцию. Теперь распаковывает нужный файл из архива
 
Mazahaka_lab Оффлайн

Mazahaka_lab

Принятый Кодер
Регистрация
25 Янв 2017
Сообщения
39
Симпатии
17
Баллы
50
#10
del
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Вверх Снизу