| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5726 人关注过本帖
标题:Adir() 获取文件大小时,不能实时更新?
只看楼主 加入收藏
琅拿度
Rank: 1
等 级:新手上路
帖 子:162
专家分:5
注 册:2016-4-7
结帖率:78.57%
收藏
已结贴  问题点数:20 回复次数:26 
Adir() 获取文件大小时,不能实时更新?
Adir(dx,'文件名') && 文件是慢慢变大的,变大的过程未停止

?dx[2]  && 得到的大小不是实时的,如果要得到实时的,必须要在win7界面刷新一下才行,有什么方法解决?

2016-09-20 20:43
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:0 
有三种方法可以解决。
API / WSH / WMI......
多看孩儿爬 (Help)

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2016-09-20 21:22
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10541
专家分:42927
注 册:2014-5-20
收藏
得分:5 
观察了一下是实时更新的,是不是更新的内容还在缓存,没有存盘?
STRTOFILE("ABCD", "C:\TEMP\test.txt", 1)
ADIR(af, "C:\TEMP\test.txt")
?af[1], af[2], af[3]
STRTOFILE("ABCD", "C:\TEMP\test.txt", 1)
ADIR(af, "C:\TEMP\test.txt")
?af[1], af[2], af[3]
2016-09-20 22:37
琅拿度
Rank: 1
等 级:新手上路
帖 子:162
专家分:5
注 册:2016-4-7
收藏
得分:0 
以下是引用吹水佬在2016-9-20 22:37:34的发言:

观察了一下是实时更新的,是不是更新的内容还在缓存,没有存盘?
STRTOFILE("ABCD", "C:\TEMP\test.txt", 1)
ADIR(af, "C:\TEMP\test.txt")
?af[1], af[2], af[3]
STRTOFILE("ABCD", "C:\TEMP\test.txt", 1)
ADIR(af, "C:\TEMP\test.txt")
?af[1], af[2], af[3]


你的代码是完成后再去看大小,我要做的是VFP去监控一个文件的大小(而这个文件不是VFP去改变大小的,而是另外的程序,这个文件不断变大的)

我的adir 是用timer去定时监控的,但是确一直得到不是实时的数值,要刷新一下才可以得到真实的值。
2016-09-20 22:50
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:5 
回复 4楼 琅拿度
要手动刷新?
2016-09-21 07:31
琅拿度
Rank: 1
等 级:新手上路
帖 子:162
专家分:5
注 册:2016-4-7
收藏
得分:0 
以下是引用tlliqi在2016-9-21 07:31:41的发言:

要手动刷新?


是,在win7的资源管理器刷新一下,就可以

(资源管理器也有文件大小的信息,比如刷新前的值是20M, 文件在不断增大,比如过了10分钟,实际大小是80M,它还是显示20M,资源管理器的文件大小也是不实时的,你刷新了才显示80M,我猜是这样的,因为文件还在变动之中,就是不断增大,所以windows也懒得去实时更新,只有windows看到文件没有写入动作了才更新)

2016-09-21 08:11
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:0 
ReadDirectoryChangesW API + WindowsEvents

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2016-09-21 08:17
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:0 
也有很多第三方的控件、动态库

也可以使用多进程、多任务调度

办法总比困难多

图片附件: 游客没有浏览图片的权限,请 登录注册



[此贴子已经被作者于2016-9-21 09:22编辑过]


团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2016-09-21 09:20
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10541
专家分:42927
注 册:2014-5-20
收藏
得分:0 
以下是引用琅拿度在2016-9-20 22:50:44的发言:



你的代码是完成后再去看大小,我要做的是VFP去监控一个文件的大小(而这个文件不是VFP去改变大小的,而是另外的程序,这个文件不断变大的)

我的adir 是用timer去定时监控的,但是确一直得到不是实时的数值,要刷新一下才可以得到真实的值。

不是VFP自己处理的文件就被动了。
可以试试:
1、用VFP的低级文件操作函数。
    SET COMPATIBLE ON
    ? FSIZE(...)
    SET COMPATIBLE OFF
   
    FOPEN() + FSEEK() 计算
2、调用 WinAPI CreateFile() 获取文件相关信息。

[此贴子已经被作者于2016-9-21 10:56编辑过]

2016-09-21 10:53
hyswcyh
Rank: 8Rank: 8
等 级:贵宾
威 望:20
帖 子:391
专家分:896
注 册:2004-11-23
收藏
得分:5 
学习一下,实时处理,是不是你的timer时间间隔太小了。
2016-09-21 11:44
快速回复:Adir() 获取文件大小时,不能实时更新?
数据加载中...
 
   



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

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