最简单的方法就是,打开文件之前先更改文件名,例如A改成B,
写完文件之后再改回A,
所以你在打开文件之前只要判断A是否存在便可知文件是否有人正在读。

解决方案 »

  1.   

    dos时代可以锁住文件一部分,到了windows好象没见过此功能
      

  2.   

    FileGetAttr :返回文件属性
    FileSetAttr :设置文件属性 
      

  3.   

    你把文件属性设为只读不就行了,具体怎么设看FileGetAttr :返回文件属性
    FileSetAttr :设置文件属性  的帮助
      

  4.   

    使用FileGetAttr :返回文件属性
      

  5.   

    赫赫,OpenFile的时候,不是有一个SHARE_DENNY_WRITE之类的参数可以设置吗?所以你可以这样:
    程序A:
    repeat
    h:=OpenFile(....Share_Denny_Write);
    if h=INVALID_HANDLE then
      ///等待一定的时间,
    else
      break;
    until true;
    ///Read File.....
    程序B:
    类似上面的。
    原理就是设置文件的共享打开方式,判断文件的句柄是否有效,无效,表明文件是Lock的,必须等待,然后再Open,如果文件句柄OK,表明另外的程序已经处理完成了,可以读写。
      

  6.   

    Kingron(戒网中……),能给我写得再详细一些吗?
    OpenFile(....Share_Denny_Write)前面两个参数我不知该怎么定义?非常感谢,你若觉得分数不够,我会再给。
      

  7.   

    dingsg111(飞天),我怎么用这个函数FileSetAttr无效?
    我得程序为:
      mmm.txt得属性为存档
      filesetattr('D:\mmm.txt',fareadonly);
      showmessage(inttostr(filegetattr('D:\mmm.txt')));
      显示得还是32。 
    你的分我也不会少给的。
      

  8.   

    回复gyfs(你快乐所以我快乐)
    你使用filesetattr('D:\mmm.txt',fareadonly);就可以改变文本文件的属性为只读
    我试过没问题
    你可以先做一个简单的是一下
      
      

  9.   

    filesetattr('D:\mmm.txt',fareadonly);
    filesetattr('D:\mmm.txt',fareadonly);
    上面的copy你的,下面一行copy我的
      我怎么不能改变呢?这是怎么回事呢?
      

  10.   

    dingsg111(飞天),谢谢你,你的这个函数我用好了,分一会给你。
      

  11.   

    Kingron(戒网中……),能给我写得再详细一些吗?
    OpenFile(....Share_Denny_Write)前面两个参数我不知该怎么定义? 
      

  12.   

    赫赫,不好意思,昨天回去了,其实有一个更好的API:LockFile()
    至于OpenFile的参数,可以到我的竹叶下载那个API全家福,里面有详细的例子的。
      

  13.   

    API的LockFile()与UnlockFile()
    就是锁文件用的
      

  14.   

    BCB(:)) 能给我一个打开文件,然后锁上,然后再关闭文件,然后再解锁的例子吗?急死我了!救救我吧!