"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
并没有过时。
我进行了 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.
对于快速而肮脏的解决方案,请使用 LoadStringFromFile
。
为了更简洁高效的解决方案,import CreateFile
WinAPI function。
我正在尝试在 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
并没有过时。
我进行了 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.
对于快速而肮脏的解决方案,请使用
LoadStringFromFile
。为了更简洁高效的解决方案,import
CreateFile
WinAPI function。