| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6299 人关注过本帖
标题:Adir() 获取文件大小时,不能实时更新?
取消只看楼主 加入收藏
琅拿度
Rank: 1
等 级:新手上路
帖 子:166
专家分:5
注 册:2016-4-7
收藏
得分:0 
以下是引用吹水佬在2016-9-22 16:59:50的发言:

按微软的说法,这个高低位数值是:
_INT64 RealSize = ((__INT64)nFileSizeHigh * (MAXDWORD+1)) + (__INT64)nFileSizeLow
其中:MAXDWORD 是 0x0ffffffff
也就是说:size_real = nHSize*0x100000000 + nLSize


晕倒了! 这个也是要在资源管理器刷新的,要不然得到的大小也是不实时的...

VFP有什么办法让某个目录定时刷新吗?
2016-09-22 18:45
琅拿度
Rank: 1
等 级:新手上路
帖 子:166
专家分:5
注 册:2016-4-7
收藏
得分:0 
以下是引用吹水佬在2016-9-22 18:59:13的发言:


这里要注意的是:WIN32_FIND_DATA结构成员nFileSizeHigh和nFileSizeLow是DWORD类型(32位无符号),VFP的CTOBIN()是有符号处理,不能直接返回无符号数值,可以自定义一个函数逐个字节处理。


我消化一下,不过这个不是实时更新的问题怎么办才好啊?
2016-09-22 19:03
琅拿度
Rank: 1
等 级:新手上路
帖 子:166
专家分:5
注 册:2016-4-7
收藏
得分:0 
以下是引用吹水佬在2016-9-22 19:30:51的发言:

示例1, 用CreateFile()
DECLARE LONG CreateFile IN Kernel32 STRING@, LONG, LONG, LONG, LONG, LONG, LONG
DECLARE LONG GetFileSize IN Kernel32 LONG, LONG@
DECLARE LONG CloseHandle IN Kernel32 LONG

hFile = CreateFile("C:\TEMP\test.txt", 8, 1, 0, 3, 0, 0)
IF (hFIle != -1)
    nHSize = 0
    nLSize = GetFileSize(hFile, @nHSize)
    CloseHandle(hFile)
    ? nHSize * 0x100000000 + nLSize
ENDIF

示例2, 用 FOPEN()+FSEEK()
hFile = FOPEN("C:\TEMP\test.txt")
IF (hFIle > 0)
    nSize = FSEEK(hFile, 0, 2)
    FCLOSE(hFile)
    ? nSize
ENDIF


实例1解决了,非常感谢!基础很差啊,虽然写了好几个软件了
2016-09-22 21:53
快速回复:Adir() 获取文件大小时,不能实时更新?
数据加载中...
 
   



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

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