Delphi 中网络驱动器上的可用磁盘空间
我正在为 A2 计算编写一个程序,它会导出大量数据。我在本地网络上的 HDD 分配约为 50 MB,因此非常适合测试“无磁盘空间”错误。
目前,当程序空间不足时,它会在导出过程中崩溃,并出现 I/O 错误 112。如果文件可能超出可用空间,我想提前发出警告。我知道文件有多大(平均每条记录 24.8 字节),所以我需要做的就是找出有多少可用空间。
当我使用像 \\qmcsan1\Cxxxxx$\filename.csv
这样的文件路径的网络驱动器时,如何使用 DiskFree
这样的函数来计算可用空间?任何此类函数还需要处理本地驱动器,例如 C:/
。
任何想法都非常感激。
I am making a program for A2 Computing which exports a lot of data. My HDD allocation on the local network is about 50 MB, so it's a good candidate to test the "no disk space" error.
Currently when the program runs out of space it crashes mid-export with I/O Error 112. I would like to warn ahead of time if the file might exceed available space. I know how big the file will be (24.8 bytes per record, on average), so all I need to do is find out how much space is free.
As I am working on a network drive, with a file path like \\qmcsan1\Cxxxxx$\filename.csv
, how do I use functions like DiskFree
to calculate available space? Any such function also needs to handle local drives like C:/
.
Any ideas much appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一种简单的方法是调用
GetDiskFreeSpaceEx
API函数。不幸的是,这个函数在 Delphi Windows 单元中被错误声明,至少在 XE2 中是这样。但 SysUtils 中声明的版本是正确的。确保您使用该版本!
One easy approach is to call the
GetDiskFreeSpaceEx
API function.Unfortunately this function is mis-declared in the Delphi Windows unit, at least it is in XE2. But there is a version declared in SysUtils which is correct. Make sure you use that version!