function GetSpaceOnDisk(const Path: String; const InMegabytes: Boolean; var Free, Total: Cardinal): Boolean;
Returns the number of free and total bytes or megabytes on a drive. Path specifies a directory on the drive or UNC share to check; it can be either the root (e.g. C:\) or an existing subdirectory. The setting of the InMegabytes parameter determines whether it returns figures in bytes or in megabytes (2^20), rounded down. Returns True if successful, False otherwise.
The figures returned by this function are capped at 2147483647 (2^31-1). Therefore, if InMegaBytes is False, it will return no more than 2147483647 bytes. If InMegaBytes is True, it will return no more than 2147483647 megabytes.
var
Path: String;
FreeMB, TotalMB: Cardinal;
begin
// Get and display free megabytes on the Program Files drive
Path := ExpandConstant('{autopf}');
if GetSpaceOnDisk(Path, True, FreeMB, TotalMB) then
begin
MsgBox('There are ' + IntToStr(FreeMB) + ' megabytes free on ' +
Path, mbInformation, MB_OK);
end
else begin
// the function failed
end;
end;