有个更好用的: GetDiskFreeSpaceEx,这个其实是sysutils里定义的全局的变量。procedure TForm1.Button1Click(Sender: TObject);
VAR
FreeBytesAvailableToCaller: Integer;
TotalNumberOfBytes : Integer;
TotalNumberOfFreeBytes : Integer;
begin
IF GetDiskFreeSpaceEx('C:',
FreeBytesAvailableToCaller,
TotalNumberOfBytes,
@TotalNumberOfFreeBytes)
THEN BEGIN
ShowMessage(
'FreeAvailable = ' +
IntToStr(FreeBytesAvailableToCaller) +
#$0D +
'TotalSpace = ' +
IntToStr(TotalNumberOfBytes) +
#$0D +
'TotalFree = ' +
IntToStr(TotalNumberOfFreeBytes) );
END
ELSE ShowMessage('Invalid Disk')
end;
VAR
FreeBytesAvailableToCaller: Integer;
TotalNumberOfBytes : Integer;
TotalNumberOfFreeBytes : Integer;
begin
IF GetDiskFreeSpaceEx('C:',
FreeBytesAvailableToCaller,
TotalNumberOfBytes,
@TotalNumberOfFreeBytes)
THEN BEGIN
ShowMessage(
'FreeAvailable = ' +
IntToStr(FreeBytesAvailableToCaller) +
#$0D +
'TotalSpace = ' +
IntToStr(TotalNumberOfBytes) +
#$0D +
'TotalFree = ' +
IntToStr(TotalNumberOfFreeBytes) );
END
ELSE ShowMessage('Invalid Disk')
end;
解决方案 »
- Delphi2010 GDIPAPI编译错误怎么办?
- 不用报表控件怎么实现数据批量打印?
- 这样转换成 delphi 函数有问题吗?
- 如何将图像保存到SQL数据库里
- 如何实现在memo实现文字行自上而下的功能。
- 有没有人做过多页面浏览器(如myie),它的前进、后退功能是怎么实现的呢?
- 调用DLL中的窗口,以非模态方法显示,不法接收键盘消息不知为何?以模态方法显示一切正常。
- 数据库中的图片显示问题
- 如何设置当前工作的打印机? 假设网络上有几台打印机.
- 我用DAO连接ACCESS数据库,我在ONCREATE事件中打开数据库,可程序启动时间超户想象竟然有几分钟,不知然后解决
- 既来之,请言之-绝对不让您失望! 大家快来关注吧! 关于游戏平台的讨论!
- Delphi 做数据库与PB,VB比较
ClusterSize, SectorSize, FreeClusters, TotalClusters: DWORD;
begin
if GetDiskFreeSpace('C:\', ClusterSize, SectorSize, FreeClusters, TotalClusters) then
begin
ShowMessage(Format('%d %d %d %d', [ClusterSize, SectorSize, FreeClusters, TotalClusters]));
end;
end;
指定磁盘的 每柱面扇区数,每扇区字节数,磁盘剩余扇区数,磁盘总扇区数
通过获得这些参数可以很方便的得到磁盘总容量,剩余容量
变量定义可以这样写
var
lpRootPathName: PChar;
lpSectorsPerCluster,
lpBytesPerSector,
lpNumberOfFreeClusters,
lpTotalNumberOfClusters:DWORD;
然后在代码中调用
lpRootPathName:='C:\';//或者'C:'也可以
GetDiskFreeSpace(lpRootPathName,
lpSectorsPerCluster,
lpBytesPerSector,
lpNumberOfFreeClusters,
lpTotalNumberOfClusters);
如果你仅仅想得到磁盘的字节信息可以用以下两个函数
DiskFree(Drive:Byte):Int64;
DiskSize(Drive:Byte):Int64;
var
ClusterSize, SectorSize, FreeClusters, TotalClusters: DWORD;
FreeSpace:int64;
begin
if GetDiskFreeSpace('C:\', ClusterSize, SectorSize, FreeClusters, TotalClusters) then
begin
ShowMessage(Format('%d %d %d %d', [ClusterSize, SectorSize, FreeClusters, TotalClusters]));
end;
FreeSpace:=ClusterSize*SectorSize*FreeClusters;//计算剩余空间
Edit1.Text:=inttostr(FreeSpace);//输出
end;
有关Api的调用,有很多现成的资料,你不妨找一些看看!
调用上基本上大同小异!
freeSpace:=int64(ClusterSize)*int64(SectorSize)*int64(FreeClusters)不妨式一下