Ветеран
Сообщения: 1133
Благодарности: 581
|
Профиль
|
Отправить PM
| Цитировать
FX-DENIS, скрипт будет выглядеть так:
Пример
Код: ![Выделить весь код](images/misc/selectcode.png)
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl
[CustomMessages]
ru.Bt=Бт
ru.Kb=Кб
ru.Mb=Мб
ru.Gb=Гб
ru.Tb=Тб
ru.Pb=Пб
ru.Eb=Эб
[Code]
var
ProgressLabel, SizeLabel: TLabel;
function BytesToReadable(Bytes: Extended; Signs: Integer): string;
{ Перевод числа в значение Бт/Кб/Мб/Гб/Тб/Пб/Эб (Signs - количество знаков после запятой)}
var
ABytes: Extended;
i: Integer;
begin
i := 0;
ABytes := Bytes;
while Int(ABytes) >= 1024 do
begin
ABytes := ABytes/1024;
i := i + 1;
end;
case i of
0: Result := FloatToStr(Int(ABytes)) + Padl(ExpandConstant('{cm:Bt}'), 1); // Байт
1: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Kb}'), [ABytes]); // Килобайт
2: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Mb}'), [ABytes]); // Мегабайт
3: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Gb}'), [ABytes]); // Гигабайт
4: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Tb}'), [ABytes]); // Терабайт
// больше Терабайта конечно не пригодится, покрайней мере в ближайшее время, но всё же...
5: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Pb}'), [ABytes]); // Петабайт
6: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Eb}'), [ABytes]); // Эксабайт
end;
StringChange(Result, ',', '.');
end;
function Size64(Hi, Lo: Integer): Extended;
begin
Result := Lo;
if Lo < 0 then
Result := Result + $7FFFFFFF + $7FFFFFFF + 2;
for Hi := Hi - 1 downto 0 do
Result := Result + $7FFFFFFF + $7FFFFFFF + 2;
end;
function GetFileSize(const FileName: string): Extended;
var
FindRec: TFindRec;
begin
Result := 0;
if FindFirst(FileName, FindRec) then
try
if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
Result := Size64(FindRec.SizeHigh, FindRec.SizeLow);
finally
FindClose(FindRec);
end;
end;
procedure Progress();
begin
with WizardForm.ProgressGauge do
ProgressLabel.Caption := IntToStr((Position-Min)/((Max - Min)/100)) + '%';
SizeLabel.Caption := BytesToReadable(GetFileSize(ExpandConstant(CurrentFileName)), 1);
end;
procedure InitializeWizard();
begin
ProgressLabel := TLabel.Create(WizardForm);
with WizardForm.ProgressGauge do
begin
ProgressLabel.Top := Top + Height + ScaleY(8);
ProgressLabel.Left := Left + Width/2 - ScaleX(8);
ProgressLabel.AutoSize := True;
ProgressLabel.Parent := WizardForm.InstallingPage;
end;
SizeLabel := TLabel.Create(WizardForm);
with WizardForm.ProgressGauge do
begin
SizeLabel.Top := Top + Height + ScaleY(8);
SizeLabel.Left := Left;
SizeLabel.AutoSize := True;
SizeLabel.Parent := WizardForm.InstallingPage;
end;
end;
Цитата by_gangster:
чем можно заменить procedure InitializeWizard(); а то меня в скрипте уже есть (при компиляции ругается) »
|
Так объедините эти две процедуры, т.е. всё что написано в procedure InitializeWizard(); после слова begin, просто скопируйте в свою procedure InitializeWizard();
|
-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.
Отправлено: 15:54, 19-03-2012
| #1174
|