Тема: 7z архивы
Показать сообщение отдельно
  #14  
Старый 28.10.2013, 16:41
Deep88 Deep88 вне форума
Прохожий
 
Регистрация: 27.10.2013
Сообщения: 8
Версия Delphi: xe4
Репутация: 10
По умолчанию

пробовал в разные места прогресс бар ставить, всё равно неправильно.
только что поставил сразху после созадния стринглиста, дошёл до середины и пошёл на втором архиве в обратную сторону и закончился опять до того как архив распаковался.
исходник sevenzip на всякий http://rghost.ru/49779527

в общем если архивы маленькие то норм, а беру 2 архива, один 500мб, распакованых получается дето 1 гб и второй 1гб архив, распакованых гдето 2, тогда чёрти что.

по поводу отладчика, запустил в режиме дебага, куча месаджей внизу о том что загружается, в основном dll всякие, куда смотреть нада?)

опять чудеса, взял тот же архив на 500 метров и другой на 200, всё нормально показало. может быть причина в том что во втором архиве до этого были теже самые файлы что и в первом?
только что взял 3 архива с разными данными, показало всё как нада. правда дёргано немного, но то ладно, плохо ток что подвисает приложение если его двигать по экрану)

сделал лабел с именем извлекаемого архива.
сделал мемо с именми извлекаемых файлов, оно записывает туда сразу все файлы в архиве разом. как сделать имя файла извлекаемого в данный момент?
делал так
Код:
 OpenFile(archives[i]);
label1.Caption:=archives[i];
for f := 0 to NumberOfItems - 1 do
if not ItemIsFolder[f] then
mlog.Lines.Add(ItemPath[f]);
второй прогресс бар добавил так
Код:
function ProgressCallback(sender: Pointer; total: boolean; value: int64): HRESULT; stdcall;
 begin
   if total  then  begin
   ArcLen := value ;
   form1.ProgressBar2.Max := value;  end else form1.ProgressBar1.Position :=trunc(ArcNum*100 + 100*value/ArcLen);
   form1.ProgressBar2.Position := value;
  Application.ProcessMessages;
  Result := S_OK; 
end; 
Ответить с цитированием