Вопрос При установке вывести размер файла (Гб/Мб) вместо процентов (%).

Xenium

Новичок
Всем вечер добрый, помогите пожалуйста заменить % на Гб/Мб при распаковке архивов.
Botva не использую, только ISDone.


Мой код:

Код:
function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
var
 s : AnsiString;
 FCurrentFile : String;
begin
  if OveralPct<=1000 then ProgressBar.Value(OveralPct);
  WizardForm.ProgressGauge.Position:=OveralPct;
  FinishLabl5.Text(ExpandConstant('{cm:TIME_TAKEN} ')+TimeStr2);
  InsPageLabl4.Text(ExpandConstant('Осталось около: ')+TimeStr1);
  InsPageLabl5.Text(ExpandConstant('Прошло около: ')+TimeStr2);
  InsPageLabl6.Text(IntToStr(Round(OveralPct div 10))+'% ИЗВЛЕЧЕНО ФАЙЛОВ');
  s := ExpandConstant('{cm:Extracting} ') + CurrentFile;
  If InsLogBox.LineStrings(InsLogBox.LineCount - 1) <> s Then
  begin
   FCurrentFile := MinimizePathName(ExpandConstant('{cm:Extracting} ') +CurrentFile, WizardForm.ReadyMemo.Font, 500 - ScaleX(50))
   InsLogBox.AddLine(FCurrentFile);
  end;
  Result := ISDoneCancel;
end;

Думаю нужно что-то в таком роде (сам делал,Гб\Мб показывает, но считает некорректно и распаковывает все архивы, включая те, которые не были выбраны в модулях.


Код:
procedure GetSize;
var
  Size: Integer;
  size_inst, size_all: Extended;
begin
  if FileSize('C:\TheFile.arc', Size) then
  begin
  if Size > 1024 then begin
    size_all:=({Size/1.024)/1000;
    if PB_pos <> 0 then size_inst:=(size_all*PB_pos)/100 else size_inst:=0;
    WizardForm.WelcomeLabel1.Caption:=IntToStr(PB_pos)+'% '+Format('%.2n', [size_inst])+' Гб из '+  Format('%.2n', [size_all])+' Гб';
end else begin
    size_all:=(Size/1.024);
    if PB_pos <> 0 then size_inst:=(size_all*PB_pos)/100 else size_inst:=0;
    WizardForm.WelcomeLabel1.Caption:=IntToStr(PB_pos)+'% '+Format('%.n', [size_inst])+' Мб из '+  Format('%.n', [size_all])+' Мб';
 end;
end;
Заранее спасибо!
 

Nemko

Дилетант
Модератор
но считает некорректно и распаковывает все архивы, включая те, которые не были выбраны в модулях
Xenium, при тестовом прогоне (#define records почитайте справку для ISDone), устанавливаются все архивы прописанные в секции Code, в не зависимости от выбора.
 

Xenium

Новичок
@Nemko,
Xenium, при тестовом прогоне (#define records почитайте справку для ISDone), устанавливаются все архивы прописанные в секции Code, в не зависимости от выбора.
Возможно упустил этот момент, после работы сегодня проверю еще раз уже на скомпилированном установщике. Собственно, отсюда и неверные данные при распаковке должны тянуться. Спасибо)
 

El Sanchez

Новичок
при тестовом прогоне (#define records почитайте справку для ISDone), устанавливаются все архивы прописанные в секции Code, в не зависимости от выбора.
Всё для общего/поархивного прогресса можно посчитать через unarc.dll до распаковки архивов, тестовый прогон не нужен вообще.
 
Сверху