剩余空间 DiskFree(0);
磁盘空间 DiskSize(0);

解决方案 »

  1.   

    //获得C盘可用空间
            GetDiskFreeSpace('C:', LPDWORD(@sector)^, LPDWORD(@byte)^, LPDWORD(@free)^, LPDWORD(@cluster)^); //获得返回参数
            totalspace := cluster * byte * sector div 1024 div 1024; //计算总容量
            freespace := free * byte * sector div 1024 div 1024; //计算可用空间
            Memo1.Lines.Add('C盘总空间(' + inttostr(integer(totalspace)) + 'MB)。');
            Memo1.Lines.Add('C盘可用空间(' + inttostr(integer(freespace)) + 'MB)。');
      

  2.   

    要得到驱动器的容量和剩余容量,用下面的程序
    var
    driver:pchar;
    sec1, byt1, cl1, cl2:longword;
    begin
    driver:='c:\';//要显示的驱动器名
    GetDiskFreeSpace(driver, sec1, byt1, cl1, cl2);
    cl1 := cl1 * sec1 * byt1;
    cl2 := cl2 * sec1 * byt1;
    Label1.Caption := '该驱动器总共容量' + Formatfloat('###,##0',cl2) + '字节';
    Label2.Caption := '该驱动器可用容量' + Formatfloat('###,##0',cl1) + '字节';
    end;--------------------------------------------------------------------------------
    获取大于2G的硬盘容量function GetDiskFreeSpaceEx(lpDirectoryName: PAnsiChar;
      var lpFreeBytesAvailableToCaller : Integer;
      var lpTotalNumberOfBytes: Integer;
      var lpTotalNumberOfFreeBytes: Integer) : bool;
      stdcall;
      external kernel32
      name 'GetDiskFreeSpaceExA'; 
    procedure GetDiskSizeAvail(TheDrive : PChar;
                               var TotalBytes : double;
                               var TotalFree : double);
    var
      AvailToCall : integer;
      TheSize : integer;
      FreeAvail : integer;
    begin
      GetDiskFreeSpaceEx(TheDrive,
                         AvailToCall,
                         TheSize,
                         FreeAvail);
    {$IFOPT Q+}
     {$DEFINE TURNOVERFLOWON}
     {$Q-}
    {$ENDIF}
      if TheSize >= 0 then
        TotalBytes := TheSize else
      if TheSize = -1 then begin
        TotalBytes := $7FFFFFFF;
        TotalBytes := TotalBytes * 2;
        TotalBytes := TotalBytes + 1;
      end else
      begin
        TotalBytes := $7FFFFFFF;
        TotalBytes := TotalBytes + abs($7FFFFFFF - TheSize);
      end;  if AvailToCall >= 0 then
        TotalFree := AvailToCall else
      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;procedure TForm1.Button1Click(Sender: TObject);
    var
      TotalBytes : double;
      TotalFree : double;
    begin
      GetDiskSizeAvail('C:\',
                       TotalBytes,
                       TotalFree);
      ShowMessage(FloatToStr(TotalBytes));
      ShowMessage(FloatToStr(TotalFree));
    end;