如题,Delphi中有没有函数判断一个文件是否正在被另一程序使用?
谢谢~

解决方案 »

  1.   

    function TForm1.IsFileInUse(fName: string): boolean;
    var
      HFileRes : HFILE;
    begin
      Result := false;
      if not FileExists(fName) then
        exit;
      HFileRes := CreateFile(pchar(fName), 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;
      

  2.   

    但是问题在于我使用 FileExists 方法时就会出现文件正在被另一程序使用的异常~
      

  3.   

    wanwangzhiwang(万王之王),不好意思了,对你的方法改进一下:
    function TForm1.IsFileInUse(fName: string): boolean;
    var
      HFileRes : HFILE;
    begin
      Result := false;
      try
        if not FileExists(fName) then
        begin
          Result:=False;
          Exit;
        end;
      except
        Result:=True;
        Exit;
      end;
      HFileRes := CreateFile(pchar(fName), 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;
      

  4.   

    FileOpen('abc.txt',  fmShareExclusive);
    你可以先判断是否Exists,也可以通过GetLastError判断是否已经被用。