Mega Code Archive

 
Categories / Delphi / Hardware
 

How do I determine the available disk space on a drive

Title: How do I determine the available disk space on a drive? This method returns the free space and capacity of the drive specified by DriveLetter. CODE function GetAvailableSpace(DriveLetter: Char): String; var DiskCapacity, FreeSpace: Extended; begin DriveLetter := UpCase(DriveLetter); DiskCapacity := DiskSize(Ord(DriveLetter) - 64) / 1048576; FreeSpace := DiskFree(Ord(DriveLetter) - 64) / 1048576; if DiskCapacity 1000 then begin DiskCapacity := DiskCapacity / 1024; FreeSpace := FreeSpace / 1024; Result := FormatFloat('#,##0.00', FreeSpace) + 'GB of ' + FormatFloat('#,##0.00', DiskCapacity) + 'GB'; end else Result := FormatFloat('#,##0', FreeSpace) + 'MB of ' + FormatFloat('#,##0', DiskCapacity) + 'MB'; end; An example of its use is in the code below. The following code runs through drives B to Z, checks if the drive is a hard drive (i.e. a fixed disk) before calling the GetAvailableSpace function, and adds the returned string to ValueListEditor1. CODE procedure TForm1.Button1Click(Sender: TObject); var driveLetter: Char; begin for driveLetter := 'B' to 'Z' do begin if GetDriveType(PChar(driveLetter + ':\')) = DRIVE_FIXED then ValueListEditor1.InsertRow('Available Space (' + driveLetter + ':)', GetAvailableSpace(driveLetter), True); end; end;