2个程序读写1个文本文件(100分)

  • 主题发起人 主题发起人 金童
  • 开始时间 开始时间

金童

Unregistered / Unconfirmed
GUEST, unregistred user!
现在有a.txt文件,其中有2个程序,自己写的和他人写的,如何保证在自己写的程序对a.txt写操作时他人写的程序不能对a.txt进行写操作,最好他人写的程序不报错.
 
连接文件时,File Open Mode 为fmShareDenyWrite
 
FileMode := fmOpenReadWrite and fmShareDenyWrite;
其他程序要做异常处理才不会报错.或者用事件等内核对象作线程同步
 
如何判断一个文件是不是正在被使用关键词:文件状态
function IsFileInUse(FileName: TFileName): Boolean;
var
HFileRes: HFILE;
begin
Result := False;
if not FileExists(FileName) then Exit;
HFileRes := CreateFile(PChar(FileName),
GENERIC_READ or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
Result := (HFileRes = INVALID_HANDLE_VALUE);
if not Result then
CloseHandle(HFileRes);
end;
判断在使用时,就将本次操作取消就OK.
http://www.delphibbs.com/keylife/iblog_show.asp?xid=20091
 
FileMode := fmOpenReadWrite and fmShareDenyWrite;
其他程序要做异常处理才不会报错.或者用事件等内核对象作线程同步

可以具体的说一下吗,我 刚刚学,不是太明白哦,举个简单的例子好吗?
 
用 "线程 同步"搜索一下以前的帖子.
 
只用fmOpenReadWrite就是独享吧.别的程序试图操作时会报错.似乎是这样吧.所以操作前用
happycyp的方法判断一下就可以了.
 
别人在写入的时候,另一个程序一写就出错了,根本不用判断。
 
用文件流
 
hoop对方的程序,
在你要写得时候,发送消息给对方程序,HOOK接受后暂停运行,
自己写,写完后再发消息给对方HOOK接受后继续运行,
 
我先试试看,不懂在问
 
后退
顶部