View Single Post
  #1  
Old 09-10-2016, 16:55
JRD!'s Avatar
JRD! JRD! is offline
Registered User
 
Join Date: Sep 2015
Location: Matrix
Posts: 274
Thanks: 225
Thanked 600 Times in 168 Posts
JRD! is on a distinguished road
Certainly the improved:
Code:
#ifdef UNICODE
  #define AW "W"
#else
  #define AW "A"
#endif

type
  TDiskInfo = record
    DriveRoot: string;
    FreeSpace: cardinal;
    TotalSpace: cardinal;
  end;

  TDiskInfos = array of TDiskInfo;

function GetDriveType(lpRootPathName: string): UINT;
  external 'GetDriveType{#AW}@kernel32.dll stdcall';
function GetLogicalDriveStrings(nBufferLength: DWORD; lpBuffer: string): DWORD;
  external 'GetLogicalDriveStrings{#AW}@kernel32.dll stdcall';

Function GetMaxFreeSpace(Value: String): String;
var
  S: String;
  I, J: Integer;
  DiskInfos: TDiskInfos;
begin
  I := 0; J:=0;
  if GetLogicalDriveStrings(0, #0) > 0 then
  begin
    SetLength(S, GetLogicalDriveStrings(0, #0));
    if GetLogicalDriveStrings(Length(S), S) > 0 then
    begin
      S := TrimRight(S) + #0;
      while Pos(#0, S) > 0 do
      begin
        if (GetDriveType(Copy(S, 1, Pos(#0, S) - 1)) = 3) then
        begin
          Inc(I);
          SetLength(DiskInfos, I);
          DiskInfos[I-1].DriveRoot:=Copy(S, 1, Pos(#0, S) - 1);
          GetSpaceOnDisk(DiskInfos[I-1].DriveRoot, True, DiskInfos[I-1].FreeSpace, DiskInfos[I-1].TotalSpace);
        end;
        Delete(S, 1, Pos(#0, S));
      end;
      for I := 0 to Length(DiskInfos) -1 do
      begin
        if I = 0 then
        J := DiskInfos[i].FreeSpace else
        begin
          if J > DiskInfos[i].FreeSpace then J := J else
          begin
            J := DiskInfos[i].FreeSpace;
            Result:=DiskInfos[i].DriveRoot;
          end;
        end;
      end;
    end;
  end;
end;
Attached Files
File Type: 7z GetMaxFreeSpace.7z (931 Bytes, 22 views)
__________________
Practice makes perfect.

Last edited by JRD!; 09-10-2016 at 16:57.
Reply With Quote
The Following 5 Users Say Thank You to JRD! For This Useful Post:
52098994 (09-10-2016), 78372 (02-07-2017), Chayan Manna (30-06-2017), pakrat2k2 (09-10-2016), SAM2712 (10-10-2016)
Sponsored Links