Проблема Проверка места на диске

Tjeyn

Новичок
При нехватки места на диске как обычно кнопка "Далее" не активна, но если на эдите (он выделяемый) написать любой символ, кнопка "Далее" стает активной.
Помогите решить проблему
Код:
function NumToStr(Float: Extended): String;
begin
  Result:= format('%.2n', [Float]); StringChange(Result, ',', '.');
  while ((Result[Length(Result)] = '0')or(Result[Length(Result)] = '.'))and(Pos('.', Result) > 0) 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 ObjectFunc(Sender: TObject);
var
  Drive: String;
begin
  case Sender of
    WizardForm.DirEdit: begin
    Drive:= ExtractFileDrive(WizardForm.DirEdit.Text);
    GetSpaceOnDisk(Drive, True, FreeMB, TotalMB);
    InstallSpacelabel.Caption:=ExpandConstant('{cm:InstallSpaceLabel}')+' '+MbOrTb({#NeedInstallSize});
    NeedSpaceLabel.Caption:= ExpandConstant('{cm:NeedSpaceLabel}')+' '+MbOrTb({#NeedSize});
    WizardForm.NextButton.Enabled:= (FreeMB>{#NeedInstallSize})and(FreeMB>{#NeedSize})  ;
    BtnSetEnabled(hNextBtn, true);
    if (FreeMB>{#NeedInstallSize})and(FreeMB>{#NeedSize}) then InstallSpaceLabel.Font.Color:=$FFFFFF else InstallSpaceLabel.Font.Color:=$0000FF;
    end;
    NoIconsLabel: begin
      BtnSetChecked(NoIconsCheck, not BtnGetChecked(NoIconsCheck));
      NoIconsClick(NoIconsCheck);
    end;
  end;
end;
 

Snoopak96

Старожил
Tjeyn,
на вскидку тут ошибка:
Код:
BtnSetEnabled(hNextBtn, true);
надо так:
Код:
BtnSetEnabled(hNextBtn,(FreeMB>{#NeedInstallSize})and(FreeMB>{#NeedSize}));
Эти две функции:
Код:
function NumToStr(Float: Extended): String;
begin
Result:= format('%.2n', [Float]); StringChange(Result, ',', '.');
while ((Result[Length(Result)] = '0')or(Result[Length(Result)] = '.'))and(Pos('.', Result) > 0) 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;
замени на:
Код:
function MbOrTb(Float: Extended): String;
begin
if Float < 1024 then Result:= FormatFloat('0', Float)+' Mb' else
if Float/1024 < 1024 then Result:= format('%.2n', [Float/1024])+' GB' else
Result:= format('%.2n', [Float/(1024*1024)])+' TB'; StringChange(Result, ',', '.');
end;
 

sergey3695

Ветеран
Модератор
Tjeyn, как-то все равно. Например: 7,2 ГБ и 7,20 ГБ, оба варианта же верны. Просто по разному выглядят.
 
Сверху