var
  ATxtFile:TextFile;
  FileName:String;//文件全路径begin
  AssignFile(ATxtFile,FileName);
  try
    Reset(ATxtFile);    //some other code
    
  finally
    CloseFile(ATxtFile);
  end;
end;我想问下 在我Reset(ATxtFile)之后 是不是会影响到其他程序对文件FileName的读写如果会的话 要怎样去避免多个程序对一个文件的读写相互的影响呢多谢

解决方案 »

  1.   

    读取这个文件的程序都是你写的吗
    如果是的话,写文件的时候用Mutex来判断一下
    读的时候不会有冲突
      

  2.   

    我想问下 在我Reset(ATxtFile)之后 是不是会影响到其他程序对文件FileName的读写 如果会的话 要怎样去避免多个程序对一个文件的读写相互的影响呢 
    ------------------------------------------------------------------------1、会影响读写,另一个程序正在使用此文件,进程无法访问;
    2、建议共享读写文件模式;
      

  3.   

    不要再用 Assign 机制了,这是老的 pascal 处理方式,在win下线程不安全
      

  4.   

    FileMode := fmShareDenyNone;
    AssignFile(ATxtFile,FileName);
      

  5.   

    我只是读 我不知道别人怎么写的 我这样在读的时候会影响到别人写嘛
    FileMode := fmShareDenyNone;
    AssignFile(ATxtFile,FileName); 
    别人写的时候我读不到 没关系
      

  6.   


    如果你读的是文本文件的话,可以使用TStringList.LoadFormFile('sometxtfile');
      

  7.   


    这个可以实现对别人的写没有影响嘛

    FileMode := fmShareDenyNone; 
    能起到什么作用呢fmShareDenyNone; 这个不是允许别的程序对文件进行任意的操作麽?
      

  8.   

    用TStringList载入就不会对别人使用产生影响了。
      

  9.   

    使用TStringList了我以前用的AssignFile改成TStringList较方便,内存映射没有去试,项目使用中出现的问题,没有时间了,以后再去试试我以前是用的AssignFile定时读取文件,但是在使用过程中有时导致本该存在于文本文件中的信息没有出现,我才考虑到这个方式是不是影响到了别人写了.谢谢各位了