当前位置:  开发笔记 > 编程语言 > 正文

检查文件在Delphi中打开

如何解决《检查文件在Delphi中打开》经验,为你挑选了3个好方法。

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

代码将是这样的:

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

Toon Krijthe.. 17

你可以得到文件模式.(有一刻,我会创造一个例子).

TTextRec(txt).Mode为您提供模式:

55216 = closed
55217 = open read
55218 = open write

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

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



1> Toon Krijthe..:

你可以得到文件模式.(有一刻,我会创造一个例子).

TTextRec(txt).Mode为您提供模式:

55216 = closed
55217 = open read
55218 = open write

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

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



2> JosephStyons..:

试试这个:

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;



3> 小智..:

这很好用:

function IsOpen(const txt:TextFile):Boolean;
const
  fmTextOpenRead = 55217;
  fmTextOpenWrite = 55218;
begin
  Result := (TTextRec(txt).Mode = fmTextOpenRead) or (TTextRec(txt).Mode = fmTextOpenWrite)
end;

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有