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

Tho*_*s O 8 delphi diskspace

我正在制作一个A2计算程序,它可以输出大量数据.我在本地网络上的硬盘分配大约是50 MB,因此它是测试"无磁盘空间"错误的好选择.

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

当我在网络驱动器上工作时,如果有文件路径\\qmcsan1\Cxxxxx$\filename.csv,我该如何使用函数DiskFree来计算可用空间?任何这样的功能也需要处理本地驱动器C:/.

任何想法都非常感激.

Dav*_*nan 10

一种简单的方法是调用GetDiskFreeSpaceExAPI函数.

不幸的是,这个函数在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.
Run Code Online (Sandbox Code Playgroud)

  • @David:对我来说,SysUtils中只有一个`GetDiskFreeSpaceEx` ......这有什么问题? (2认同)