Yaroslav950
Участник
Добрый вечер,
С кодом постоянные ошибки нашёл скрипт Need for Speed Undercover [v.2.4c], там есть такой код,но он сложный,может проще можно сделать. Код который я скинул не надо менять, а просто по этому коду пример сделать.
Код:
#define NeedSize "75000"
[Setup]
AppName=Test
AppVersion=1.5
DefaultDirName={sd}\Test
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[CustomMessages]
russian.FreeSize=Доступно места на диске:
russian.NeedSize=Требуется места на диске:
[Code]
var
NeedSpaceLabel,FreeSpaceLabel: TLabel;
FreeMB, TotalMB: Cardinal;
NeedSize: Integer;
//================= Диск =================//
function NumToStr(Float: Extended): String;
begin
Result:= Format('%.2f', [Float]);
StringChange(Result, ',', '.');
while ( Pos('.', Result) > 0 ) and ( (Result[Length(Result)] = '0') or (Result[Length(Result)] = '.') ) do
SetLength(Result, Length(Result) - 1);
end;
function MbOrTb(Float: Extended): String;
begin
if Float < 1024 then Result:= NumToStr(Float)+' Мб' else
if Float/1024 < 1024 then Result:= NumToStr(Float/1024)+' Гб' else
Result:= NumToStr(Float/(1024*1024))+' Тб';
end;
procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB > 1024 then
FreeSpaceLabel.Caption:= ExpandConstant('{cm:FreeSize} ')+MbOrTb(FreeMB)+' ('+IntToStr(round(FreeMB*100/TotalMB))+'%)';
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := False else
WizardForm.NextButton.Enabled := True;
end;
procedure GetNeedSpaceCaption;
begin
if NeedSize > 1024 then
NeedSpaceLabel.Caption := ExpandConstant('{cm:NeedSize} ')+ NumToStr(round(NeedSize/1024*100)/100) + ' Гб' else
NeedSpaceLabel.Caption := ExpandConstant('{cm:NeedSize} ')+ IntToStr(NeedSize)+ ' Мб';
end;
//================= Конец - Диска =================//
procedure InitializeWizard;
begin
NeedSize:= {#NeedSize};
NeedSpaceLabel:= TLabel.Create(WizardForm);
NeedSpaceLabel.SetBounds(ScaleX(50),ScaleY(315),ScaleX(300),ScaleY(20))
NeedSpaceLabel.Transparent:= True;
NeedSpaceLabel.Font.Style:= [fsBold]
NeedSpaceLabel.Font.Color:= clLime
NeedSpaceLabel.Font.Size:= 10
NeedSpaceLabel.Parent:= WizardForm
FreeSpaceLabel:= TLabel.Create(WizardForm);
FreeSpaceLabel.SetBounds(ScaleX(295), ScaleY(315), ScaleX(300),ScaleY(20))
FreeSpaceLabel.Transparent:= True;
FreeSpaceLabel.Font.Style:= [fsBold]
FreeSpaceLabel.Font.Color:= clLime
FreeSpaceLabel.Font.Size:= 10
FreeSpaceLabel.Parent:= WizardForm
WizardForm.DirEdit.OnChange:= @GetFreeSpaceCaption;
WizardForm.DirEdit.Text:= WizardForm.DirEdit.Text + #0;
(*
WizardForm.DirEdit.Parent:= WizardForm
WizardForm.DirEdit.Left:= ScaleX(42)
WizardForm.DirEdit.Top:= ScaleY(370)
WizardForm.DirEdit.Width:= ScaleX(250)
WizardForm.DirEdit.Font.Size:= 8
WizardForm.DirEdit.Font.Style:= [fsBold]
*)
end;
procedure CurPageChanged(CurPageID: Integer);
begin
FreeSpaceLabel.Hide;
NeedSpaceLabel.Hide;
case CurPageID of
wpSelectDir:
begin
FreeSpaceLabel.Show; NeedSpaceLabel.Show;
GetNeedSpaceCaption;
end;
end;
end;