GetDiskFreeSpaceEx(PChar(driver+':\'),userFreeBytes,totalBytes,@freeBytes);
我只能用这个来得到单个分区的大小,我想得到的是整个硬盘的大小,在哪看过一个 for循环来着,但当时没记下来,现在用到了也找不到了,高手给个帮助,,,,
我只能用这个来得到单个分区的大小,我想得到的是整个硬盘的大小,在哪看过一个 for循环来着,但当时没记下来,现在用到了也找不到了,高手给个帮助,,,,
解决方案 »
- 有木有 加载jpg图片 时特效显示的 组件或者方法
- 程序写入服务的问题
- 关于Ctrl_V操作键的消息?
- 获得 两个数据表的异、或、非的写法 有多少种
- 求助:急需《Delphi DirectX图形与游戏程序设计 》 电子科技大学出版社
- 怎么判断一个BAT文件的运行状态,大虾请进,急!!!!!!
- ljmanage你好,进来领分!!!!
- 做请稍候的最顶层窗口
- 怎样打印form上的内容?非常急,明天就要出去交差了!!!在线等...
- 如何对计算字段的记录进行添加?
- 使用函数的一个问题,我用GetDiskFreeSpaceEx得到硬盘的大小,但返回值太大,42,598,848G
- pagecontrol控制mdi子窗体的问题
var
DiskType: Word;
D: Char;
Str: string;
i: Integer;
begin
for i := 0 to 25 do
begin
D := Chr(i + 65);
Str := D + ':';
DiskType := GetDriveType(PChar(Str));
//得到本地磁盘和网络盘
if (DiskType = DRIVE_FIXED) or (DiskType = DRIVE_REMOTE) then
begin
GetDiskFreeSpaceEx(PChar(D+'\'),userFreeBytes,totalBytes,@freeBytes);
//sum(userFreeBytes),sum(totalBytes),sum(freeBytes)
end;
end;
end;
var
d,dr:Char;
DiskType:Word;
Str:String;
i:Integer;
sum1,sum2,userFreeBytes,totalBytes,freeBytes:Int64;
begin
for i:= 0 to 25 do
begin
d:=Chr(i+65);
Str:='d';
DiskType:=GetDriveType(pChar(d+':\'));
if(DiskType = DRIVE_FIXED) or (DiskType = DRIVE_REMOTE) then
begin
GetDiskFreeSpaceEx(pChar(d+':\'),userFreeBytes,totalBytes,@freeBytes); sum1:= sum1+totalBytes;
sum2:= sum2+freeBytes;
end;
end;
Edit1.Text:=Formatfloat('###,##0',(((sum1)div 1000)div 1000)div 1000)+'G';
Edit2.Text:=Formatfloat('###,##0',(((sum2)div 1000)div 1000)div 1000)+'G';
end;
var
d,dr:Char;
DiskType:Word;
Str:String;
i:Integer;
sum1,sum2,userFreeBytes,totalBytes,freeBytes:Int64;
begin
sum1:=0;
sum2:=0;
for i:= 0 to 25 do
begin
d:=Chr(i+65);
Str:='d';
DiskType:=GetDriveType(pChar(d+':\'));
if(DiskType = DRIVE_FIXED) or (DiskType = DRIVE_REMOTE) then
begin
GetDiskFreeSpaceEx(pChar(d+':\'),userFreeBytes,totalBytes,@freeBytes); sum1:= sum1+totalBytes;
sum2:= sum2+freeBytes;
end;
end;
Edit1.Text:=Formatfloat('###,##0',(((sum1)div 1000)div 1000)div 1000)+'G';
Edit2.Text:=Formatfloat('###,##0',(((sum2)div 1000)div 1000)div 1000)+'G';
end;
对不起,我这里有一点是不对的地方!
改为
if (DiskType = DRIVE_FIXED) then
Function Get_Disk_Size:string;
var
d,dr:Char;
DiskType:Word;
Str,S1,S2:String;
i:Integer;
total,free,userFreeBytes,totalBytes,freeBytes:Int64;
begin
total:=0; // 此处必须初始化,否则返回值巨大
free:=0; for i:= 0 to 25 do
begin
d:=Chr(i+65);
Str:='d';
DiskType:=GetDriveType(pChar(d+':\'));
if(DiskType = DRIVE_FIXED) then
begin
GetDiskFreeSpaceEx(pChar(d+':\'),userFreeBytes,totalBytes,@freeBytes); total:= total+totalBytes;
free:= free+freeBytes;
end;
end;
S1:='硬盘总容量'+Formatfloat('###,##0',(((total)div 1000)div 1000)div 1000)+'G';
S2:='硬盘可用空间'+Formatfloat('###,##0',(((free)div 1000)div 1000)div 1000)+'G'; Result:=S1+' '+S2; //中间的 ' '可以没有的,只是为了输出时加几个空格 end;