Телефон: +7 (926) 245-03-63

Определение свободного места на диске

Следующая статья: Пиктограмма приложения в панели задач.

Как определить количество свободного места на диске размером более 2 Гбайт?

Для этого потребуется использовать GetDiskFreeSpaceEx() с последующим преобразованием целочисленных значений к типу Double.

GetDiskFreeSpaceEx: 
 function (Directory: PChar; var FreeAvailable, 
      TotalSpace: TLargeInteger; 
      TotalFree: PLargeInteger): Bool stdcall=nil; 

procedure GetDiskSizeAvail(TheDrive: PChar; var TotalBytes: double; var TotalFree: double);
var
AvailToCall, Thesize:TLargeInteger;
FreeAvail: PLargeInteger; 
begin 
  GetDiskFreeSpaceEx(TheDrive, AvailToCall, TheSize, FreeAvail);
 {$IFOPT Q+}
  {$DEFINE TURNOVERFLOWON}
  {$Q-}
 {$ENDIF}
 if TheSize>=0 then 
  TotalBytes:=TheSize 
 else 
 begin
  if TheSize=-1 then
  begin
   TotalBytes:=$7FFFFFFF;
   TotalBytes:=TotalBytes*2;
   TotalBytes:=TotalBytes+1;
  end
  else
  begin
   TotalBytes:=$7FFFFFFF;
   TotalBytes:=TotalBytes+abs($7FFFFFFF-TheSize);
  end;
 end;
 if AvailToCall>=0 then
  TotalFree:=AvailToCall
 else
 begin
  if AvailToCall=-1 then
  begin
   TotalFree:=$7FFFFFFF;
   TotalFree:=TotalFree*2;
   TotalFree:=TotalFree+1;
  end
  else
  begin
   TotalFree:=$7FFFFFFF;
   TotalFree:=TotalFree+abs($7FFFFFFF-AvailToCall);
  end;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
TotalBytes: double;
TotalFree: double;
begin 
 GetDiskSizeAvail('C:\', TotalBytes, TotalFree);
 ShowMessage('Total bytes:'+FloatToStr(TotalBytes));
 ShowMessage('Total bytes free:'+FloatToStr(TotalFree));
end;

Примечание: Функция GetDiskFreeSpaceEx описана в SysUtils.

Интересное в интернете: Люксор - купить плитку пвх оптом - продажа и доставка плитки пвх в СПб.