Следующая статья: Пиктограмма приложения в панели задач.
Как определить количество свободного места на диске размером более 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.