检查文件是否在Delphi中打开

时间:2020-03-06 14:48:03  来源:igfitidea点击:

有没有办法检查ReWrite是否已在Delphi中打开文件?

代码将如下所示:

AssignFile(textfile, 'somefile.txt');
if not textFile.IsOpen then
   Rewrite(textFile);

解决方案

我们可以获取文件模式。 (片刻,我将创建一个示例)。

TTextRec(txt).Mode提供以下模式:

55216 = closed
55217 = open read
55218 = open write

fmClosed = $D7B0;
fmInput  = $D7B1;
fmOutput = $D7B2;
fmInOut  = $D7B3;

在系统单元中搜索TTextRec以获取更多信息。

试试这个:

function IsFileInUse(fName: string) : boolean;
var
  HFileRes: HFILE;
begin
  Result := False;
  if not FileExists(fName) then begin
    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 begin
    CloseHandle(HFileRes);
  end;
end;