Delphi中网络驱动器上的可用磁盘空间

时间:2011-12-15 09:17:18

标签: delphi diskspace

我正在为A2 Computing制作一个导出大量数据的程序。我在本地网络上的硬盘分配大约为50 MB,因此它是测试“无磁盘空间”错误的理想选择。

目前当程序空间不足时,它会在I / O错误112的情况下崩溃。如果文件可能超出可用空间,我想提前警告。我知道文件有多大(平均每条记录24.8字节),所以我需要做的就是找出空闲的空间。

当我正在使用像\\qmcsan1\Cxxxxx$\filename.csv这样的文件路径处理网络驱动器时,如何使用DiskFree之类的函数来计算可用空间?任何此类功能也需要处理C:/等本地驱动器。

任何想法都非常感激。

1 个答案:

答案 0 :(得分:10)

一种简单的方法是调用GetDiskFreeSpaceEx API函数。

不幸的是,这个函数在Delphi Windows单元中被错误声明,至少它在XE2中。但是在SysUtils中声明的版本是正确的。确保使用该版本!

program FreeDiskSpace;
{$APPTYPE CONSOLE}
uses
  SysUtils;

const
  Folder = 'C:\';

var
  FreeAvailable, TotalSpace: Int64;

begin
  if SysUtils.GetDiskFreeSpaceEx(PChar(Folder), FreeAvailable, TotalSpace, nil) then begin
    Writeln(TotalSpace div (1024*1024*1024), 'GB total');
    Writeln(FreeAvailable div (1024*1024*1024), 'GB free');
  end;
end.