!!!简单的问题200分!!!:如何以独占方式打开文本文件?(即该文件被打开后,别的进程不能再对其进行读写)急!!!! (100分)

  • 主题发起人 lovelypengpeng
  • 开始时间
L

lovelypengpeng

Unregistered / Unconfirmed
GUEST, unregistred user!
我用API函数 FileOpen('c:/test.txt', fmOpenReadWrite or fmShareExclusive),
但是运行后同一进程还是可以打开该文件,是不是有bug?
我不知道该问题属于哪个分类,就发到这儿来了,请版主不要怪我

 
分给少了。
豁出去了,谁要是回答正确我给500分。我只有这么多分了。
 
我不知道有FileOpen这个API,MSDN上没有吔。不过有CreateFile呀!
var
H: THandle;
begin
H := CreateFile('c:/test.txt', GENERIC_READ or GENERIC_WRITE, 0,
nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
try
// type your code here
// the file can't be shared until CloseHandle(H);
finally
CloseHandle(H);
end;
end;

不过这也不是绝对的,只是正常情况下不能被其它程序读写而已。用特殊的办法,
如MoveFileEx,甚至可以在Windows运行的情况下删除‘kernel32.dll’。
 
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
i:=FileOpen('E:/723cc.txt',fmOpenRead and fmShareExclusive);
if i=-1 then
ShowMessage('fjs;f');
end;
判断FileOpen返回值 如是-1则没有打开;
试一下连点二下;
 
不是有Bug,有可能你打开文件的时候已经有其他进程打开了,所以要检查FileOpen是否成功
其实超级兔子的文件锁定就是这样锁定的!
 
时间过长,斑竹代为结束![:D]
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
顶部