| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
免费IT实战开发视频教程合集分享千里之行 始于足下
共有 422 人关注过本帖
标题:vfp如何准确获取硬盘总容量、已用容量或剩余容量
只看楼主 加入收藏
hyswcyh
Rank: 8Rank: 8
等 级:贵宾
威 望:19
帖 子:378
专家分:888
注 册:2004-11-23
结帖率:100%
  已结贴   问题点数:20  回复次数:6   
vfp如何准确获取硬盘总容量、已用容量或剩余容量
如标题!

我用系统自带的函数返回数据有出入,diskspace('d:',1)返回D盘总容量,diskspace('d:',2)返回D盘剩余容量,获取的D盘已用容量与实际有出入,不一致,请问如何能得到精确数据?


请各位大神指导!谢谢!
2018-07-30 17:50
hyswcyh
Rank: 8Rank: 8
等 级:贵宾
威 望:19
帖 子:378
专家分:888
注 册:2004-11-23
  得分:0 


图片上标注的是扫描结束时的显示的最终百分比。很郁闷!

进度是:(当前扫描到的文件大小总和/硬盘已用容量)*100%

扫描到的文件大小总和与操作系统文件夹查看属性看到的大小是一致的,但用diskspace()返回的数据是不准确的。

郁闷!请帮忙看看。谢谢!
附件: 您没有浏览附件的权限,请 登录注册
2018-07-30 18:08
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:163
帖 子:6320
专家分:27650
注 册:2014-5-20
  得分:10 
可能是检测程序不同步,两次检测之间磁盘数据有变化。
用API试试:
DECLARE LONG GetDiskFreeSpace IN Kernel32 STRING@, LONG@, LONG@, LONG@, LONG@
cRootPathName = "C:"
nSectorsPerCluster = 0
nBytesPerSector = 0
nNumberOfFreeClusters = 0
nTotalNumberOfClusters = 0
GetDiskFreeSpace(@cRootPathName, @nSectorsPerCluster, @nBytesPerSector,;
    @nNumberOfFreeClusters, @nTotalNumberOfClusters)
? cRootPathName
? "已用空间: "+PADL((nTotalNumberOfClusters-nNumberOfFreeClusters)*nSectorsPerCluster*nBytesPerSector,20," ")
? "可用空间: "+PADL(nNumberOfFreeClusters*nSectorsPerCluster*nBytesPerSector,20," ")
? "---------------------------------------------"
? "磁盘容量: "+PADL(nTotalNumberOfClusters*nSectorsPerCluster*nBytesPerSector,20," ")
2018-07-30 21:15
sdta
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:170
帖 子:7399
专家分:17490
注 册:2012-2-5
  得分:10 
Clear
FSO=CreateObject("Scripting.FileSystemObject")
colDrives=FSO.Drives
For Each oBjDrive In colDrives
    If oBjDrive.IsReady
        ? oBjDrive.DriveLetter  && 驱动器名称
        ? Transform(Int(oBjDrive.TotalSize/(1024*1024*1024))) && 各驱动器总容量(GB)
        ? Transform(int(objDrive.FreeSpace/(1024*1024*1024))) && 各驱动器剩余容量(GB)
    EndIf
EndFor

坚守VFP最后的阵地
2018-07-30 21:19
hyswcyh
Rank: 8Rank: 8
等 级:贵宾
威 望:19
帖 子:378
专家分:888
注 册:2004-11-23
  得分:0 
都很准确!谢谢两位版主!

就兼容性和内存占用方面而言,API和FSO哪个方式更好些?谢谢!

[此贴子已经被作者于2018-7-31 08:43编辑过]

2018-07-31 08:27
hyswcyh
Rank: 8Rank: 8
等 级:贵宾
威 望:19
帖 子:378
专家分:888
注 册:2004-11-23
  得分:0 


这是用FSO的结果!
附件: 您没有浏览附件的权限,请 登录注册
2018-07-31 12:36
schtg
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:17
帖 子:518
专家分:686
注 册:2012-2-29
  得分:0 
谢谢各位,学习啦!
2018-07-31 20:20







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029160 second(s), 9 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved