消息关闭
    暂无新消息!
一个程序每隔一秒就进行对A文件的进行读操作,另一个程序经常同时对A文件进行写操作时失败,文件类型是TIniFile。有什么简单的方法解决这个问题吗?谢谢

14个回答

︿ 3
文件打开模式的问题,写文件的程序应该用fmOpenReadWrite + fmShareDenyWrite,读文件的程序可以用fmOpenRead  + fmShareDenyNone 
︿ 2
感觉像是进程间数据传递,如果是这样,建议用共享内存+事件;管道等方式,可靠,安全,及时,文件来传递,不太好
︿ 1
一般情况下,共享冲突都是交由系统自动判断及处理比较好
楼主的情况可以尝试用TMEMO的LOADFROMFILE及SAVETOFILE方法进行处理解决共享冲突,不过对于INI的格式操作就得再进行处理
︿ 1
读写ini也是很快的,最简单的就是加定时器判断时钟的秒。
复杂点进程间通信,或者网络通信……
︿ 1
不要写那么频繁吧。如果不想建立两个程序间的通信,那么就简单点:用定时器,读时间,秒数模4为0第一个程序可操作,秒数模4第二个程序可操作。前提:1、每个程序都能很快操作完;2、每次都要重新读入初始化值。
︿ 0
程序A读文件, 可以先拷贝出一个副本然后再读;
程序B写完后, 同时通知程序A,需要重新拷贝
︿ 0
1、因为INI文件读写时,是逐条读写,所以读写操作不上,比较慢。
2、系统不允许一个文件被二个程序,同时读写。否则,出错。
3、如果非得分这样话,可以通过:
(1)在A程序中,设定二个Boolean;类型的变量,
var F1,F2: Boolean;类型的变量,
A程序读写文件时F1为真,否则为假;
B程序读写文件时F2为真,否则为假;
这样,通过共享内存方式,B程序也可读写F,F2。
4、操作时A程序当F2为假时,才能读写文件。B程序当F1为假时,才能读写文件。
︿ 0
有一个办法。通过标准时间,进行分配,比如一分钟,前三十秒由A读写INI文件,后三十秒由B程序读写INI谁的。