文件锁问题 在线等(100分)

  • 主题发起人 主题发起人 jiaweixjw
  • 开始时间 开始时间
J

jiaweixjw

Unregistered / Unconfirmed
GUEST, unregistred user!
要时时读取文本文件的内容更新到数据库,但还有一个程式在不定时的
去写文本文件,但用到LoadFromFile 时会锁定文件。我只是去读取内容,
有什么方式可以不用锁定文件,而得到文本里边的内容,要求处理速度
比较快,谢谢啦 ,谁知道啊 ,求教。
以下是本人代码:
var strlist:tstringlist;
begin
try
strlist:=tstringlist.Create;
strlist.LoadFromFile(Ss);
////处理代码
strlist.Free ;
except
 
最佳办法你的另一个程序和你的这个程序合并,直接操作数据库。
 
启用共享机制呀!
解决的方法很多,关键是要发解你的真正意图
qq:33586813
 
郁闷就是没法和啊 ,要做系统整哈 ,另一个是Java开发的硬件程序,只能以后有机会
写成一个。
 
不锁的话很容易读到 未完整更新的内容 比如你写入123 3还没写入 你就读 就会出错了
最好是rename 改文件名 也就是一共2个文件
 
以文件做为系统接口形式的,应该定一个文件名格式,比如说写入方每小时生成一个文件,在写的时候把文件名写为a080204_10.tx_,写完以后更名为a080204_10.txt,并建立一个新的文件叫做a080204_11.tx_以写入下一个小时的接口数据,读取方发现产生了新的扩展名为.txt的文件时,就知道有新任务可以处理了,处理完以后移到备份目录,这样就可以避免读写冲突。两个不同进程同时存取一个文件是一种很差的做法,如果很在乎实时性的话,就不会采用文件方式做接口了。
 
定位到classes 4568行
把 Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
改:Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyRead);
保存,重新编译classes!或者把tstringlist类复制出来!都可以!
 
读“脏数据”
 
多人接受答案了。
 
后退
顶部