请问如何判断一个文件正在被修改中。。。(30分)

  • 主题发起人 主题发起人 geshicheng
  • 开始时间 开始时间
G

geshicheng

Unregistered / Unconfirmed
GUEST, unregistred user!
一文本文件,有外部程序修改它,每10秒一修改,我在修改他时想<br>判断它是否被修改,<br>我应用ttimer每一秒判断一次
 
这个文件是什么文件类型,文件修改是系统控制的,而且每次只能由一个程序操作<br>应该是简单的,判断是否被修改可以看文件的属性
 
在修改之前,读入内存。 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 
用 CreateFile 以 GENERIC_WRITE 方式<br>打开,判断返回句柄是否=INVALID_HANDLE_VALUE<br>不知道行不行<br><br>另外 Delphi win32sdk 中有个函数<br>bool IsFileWritable(LPSTR szFile);<br>但Delphi 的头文件中未声明,不知道再那个<br>dll中
 
实际上此文本文件是采集设备实时数据,每10秒被写入一次数据<br>我用tchart输出,需要考虑数据正本修改时出错,所以想知道避免出错的方法
 
以只读方式打开文件。
 
可以按照这个原理:<br>&nbsp; &nbsp; TTimer每秒取一次[目标文件的修改时间],然后跟上一次保存下来的[目标文件的修改时间]比较,如果相同证明外部程序还没修改到,反之就是修改了,就取目标文件数据(若你也要修改目标文件,先复制副本或调入内存中处理),同时记住这一次的 [目标文件的修改时间]以备下一次的比较。<br><br>获取文件修改时间可用下面函数参照<br>http://www.delphibbs.com/delphibbs/DispQ.asp?LID=1750766
 
用共享内存建立一个锁机制
 

Similar threads

回复
0
查看
830
不得闲
D
回复
0
查看
889
DelphiTeacher的专栏
D
D
回复
0
查看
857
DelphiTeacher的专栏
D
D
回复
0
查看
808
DelphiTeacher的专栏
D
后退
顶部