var
 snumber,sbyte,remainc,sumc:dword;
begin
 getDiskFreeSpace('c:\',snumber,sbyte,remainc,sumc); //C盘
 label3.Caption:=intTostr((sumc*snumber*sbyte)div(1024*2))+' M'; //计算总容量
 label4.Caption:=intTostr((remainc*snumber*sbyte)div(1024*2))+' M'; //计算剩余容量
end;结果如图:
我的C盘总容量是50G,和上面是结果不一致啊,代码哪里有问题么?

解决方案 »

  1.   

    用getDiskFreeSpaceex,getDiskFreeSpace已过时了
      

  2.   

    var
      Available, TotalSpace: Int64;
    begin
      Available := 0;
      TotalSpace := 0;
      if GetDiskFreeSpaceEx('C:', Available, TotalSpace, nil) then
      begin
        Label3.Caption := FormatFloat('###0.# MB', TotalSpace / 1024 / 1024);
        Label4.Caption  := FormatFloat('###0.# MB', Available / 1024 / 1024);
      end;
    end;
      

  3.   

    整数溢出了.用这个var
      snumber,sbyte,remainc,sumc:dword;
      n : int64;
    begin
      getDiskFreeSpace('c:\',snumber,sbyte,remainc,sumc); //C盘
      n := sumc*snumber*sbyte;
      label3.Caption:=intTostr(n div(1024*1024))+' M'; //计算总容量
      n := remainc*snumber*sbyte;
      label4.Caption:=intTostr(n div(1024*1024))+' M'; //计算剩余容量
    end;话说你为什么是1024*2呢?