CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  API 调用

请教:关于获取磁盘容量的API函数.GETDISKFREESPACEEX

楼主ribut9225(幽灵庄主)2005-04-04 08:32:35 在 PowerBuilder / API 调用 提问

我想问一下,PB是否支持GETDISKSPACEEX()?  
  我是这样做的,可是得不到真确的结果,请各位大侠指点一下:  
   
  定义了个结构large_integer,成员如下:  
  long         lowpart  
  long         highpart  
   
  声名函数:  
  function   long   GetDiskFreeSpaceEx   (ref   string   lpRootPathName,   large_integer   lpFreeBytesAvailableTocaller,   large_integer   lpTotalNumberOfBytes   ,large_integer   lpTotalNumberOfFreeBytes)   LIBRARY   "kernel32.dll"   ALIAS   for   "GetDiskFreeSpaceExA"  
   
  写代码  
  string   ls_rootpath  
  large_integer   lst_a,lst_sum,lst_free  
  long   ll_n1  
   
  ll_n1=getdiskfreespaceex(ls_rootpath,lst_a,lst_sum,lst_free)  
   
  if   ll_n1=0   then  
        messagebox("提示","失败")  
        return  
  end   if  
   
  mle_1.text=string(lst_a.lowpart)+";"+string(lst_a.highpart)+"~r~n"  
  mle_1.text=mle_1.text+string(lst_sum.lowpart)+";"+string(lst_sum.highpart)+"~r~n"  
  mle_1.text=mle_1.text+string(lst_free.lowpart)+";"+string(lst_free.highpart)  
  可是得出的结果都是0  
  为什么呢?  
  请高手指点一下  
  问题点数:40、回复次数:6Top

1 楼balloonman2002()回复于 2005-04-04 09:15:14 得分 10

获取的结构中高、低32位不能直接使用,必须先变换才对,参考:  
   
  http://search.csdn.net/Expert/topic/785/785297.xml?temp=.7216608Top

2 楼ribut9225(幽灵庄主)回复于 2005-04-04 10:01:52 得分 0

奇怪了  
  我照抄他的代码,得出的结果还是0  
  为什么会这样?  
  下面是我抄来的代码  
  string   ls_dirname    
  large_integer   lstru_own_space,   lstru_total_space,   lstru_free_space  
  long   ll_retval    
  ls_dirname   =   'c:'  
   
  ll_retval   =   GetDiskFreeSpaceEx(ls_dirname,   lstru_own_space   ,   lstru_total_space   ,   lstru_free_space)  
  if   ll_retval=1   then  
  st_1.Text   =   String((lstru_own_space.lowpart/(1024*1024)   +   lstru_own_space.highpart*(4294967295/(1024*1024)))/1024,'0.00')  
  st_2.Text   =   String((lstru_total_space.lowpart/(1024*1024)   +   lstru_total_space.highpart*(4294967295/(1024*1024)))/1024,'0.00')  
  st_3.Text   =   String((lstru_free_space.lowpart/(1024*1024)   +   lstru_free_space.highpart*(4294967295/(1024*1024)))/1024,'0.00')  
  end   if  
  large_integer是一个结构,定义如下:  
   
  LowPart,unsignedlong   //低32位  
  HighPart,unsignedlong   //   高32位  
  我那里搞错了?  
  还望指点一下啊  
  Top

3 楼ribut9225(幽灵庄主)回复于 2005-04-04 11:47:59 得分 0

自己顶Top

4 楼balloonman2002()回复于 2005-04-04 13:59:17 得分 30

这是我自己的代码,可以成功运行,你参考一下吧:  
   
  //返回指定驱动器的总空间,单位:M  
   
  long   TotalBytes[2],FreeBytes[2],BytesAvailableToCaller[2],status  
  dec{0}   ld_total  
  dec{2}   ld_MB  
  string   ls_return  
   
  Status   =   GetDiskFreeSpaceExA(as_disk+":",   BytesAvailableToCaller[],TotalBytes[],   FreeBytes[])  
   
  if   status   <>   0   then  
  ld_total=   0.1   *     2^16   *   2^16   *10  
  ld_total=ld_total   *   TotalBytes[2]  
  ld_MB=(ld_total   +   TotalBytes[1])   /   1024   /   1024  
  ls_return=string(ld_MB)  
  end   if  
   
  return   ls_returnTop

5 楼ribut9225(幽灵庄主)回复于 2005-04-04 14:31:27 得分 0

大哥,你的外部函数的声名是如写的?  
  我参照你的代码,这样写:  
   
  function   long   GetDiskFreeSpaceEx   (ref   string   lpRootPathName,   long   lpFreeBytesAvailableTocaller[],   long   lpTotalNumberOfBytes[]   ,long   lpTotalNumberOfFreeBytes[])   LIBRARY   "kernel32.dll"   ALIAS   for   "GetDiskFreeSpaceExA"  
  可是最后ls_return   的值为0  
  这是为什么?  
   
  Top

6 楼ribut9225(幽灵庄主)回复于 2005-04-04 14:53:57 得分 0

咦?  
  为什么没有分数?  
  我已结贴了啊  
  是不是要明天才能看到?Top

相关问题

  • 有谁知道格式化磁盘的api函数?谢谢!!!
  • 急用....有将 FAT32 磁盘格式转换为 NTFS 格式的 API函数????
  • 急用....有将 FAT32 磁盘格式转换为 NTFS 格式的 API函数????
  • api函数
  • 求API函数?
  • API函数
  • API函数
  • API 函数!
  • 请问怎样用findfirstfile等API函数实现在磁盘中查找某个特定文件?
  • api函数求教

关键词

  • 函数
  • 代码
  • 结构
  • lstru
  • getdiskfreespaceex
  • lst
  • highpart
  • lowpart
  • getdiskfreespaceexa
  • mle

得分解答快速导航

  • 帖主:ribut9225
  • balloonman2002
  • balloonman2002

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo