"Unknown Identifier 'FileOpen'" 在 Inno Setup 代码中尝试检测锁定文件时

"Unknown Identifier 'FileOpen'" when trying to detect locked file in Inno Setup code

我正在尝试在 Inno Setup 代码中使用 FileOpen,但是 Inno Setup 编译器一直向我抛出以下错误。

Unknown Identifier 'FileOpen'

这是一个示例代码:

function IsFileLocked(pathFile : string) : Boolean;
var
  hFile : integer;
begin
  Result := true;

  hFile := FileOpen(pathFile);
  if (0 <> hFile) then
    begin
      Result := false;

      { Since ISPP 1.2, Inno Setup automatically frees resources, so FileClose() is obsolete. }
      { http://www.jrsoftware.org/ispphelp/index.php?topic=fileclose }
    end;
end;

FileClose方法不同,FileOpen并没有过时。

FileOpen

我进行了 Google 搜索,但没有找到任何结果。我知道 Inno Setup 使用 Pascal 脚本,而不是 Pascal,但是 FileOpen 函数是 Inno Setup Preprocessor: Functions.

的一部分

注意:我今天早上升级到最新版本的编译器(5.6.1a)和最新版本的Inno Script Studio(2.3.0),同样的问题。

我确实看到了 Other Information > ISPPBuiltins.iss 部分。我尝试添加行:

[Code]
#include <ISPPBuiltins.iss>

添加 #include 语句,生成错误

ISPPBuiltins.iss Line 1: Column 1:'BEGIN' expected.

ISPPBuiltins.iss添加到项目中作为解决FileOpen问题的方法是没有意义的,因为在文本编辑器中打开文件显示其中不存在“FileOpen”。我没有看到任何嵌入式文件。编译器似乎不喜欢文件中的“; BEGIN ...”,但我离题了。想太多了。

关于如何使用 FileOpen 解决我的未知标识符问题的想法?

FileOpen is a preprocessor function. You cannot use it in Pascal Script code, which has its own function library.