我正在尝试在Inno Setup代码中使用FileOpen
,但是Inno Setup编译器不断向我抛出以下错误。
未知标识符“ 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第1行:第1列:“ BEGIN”。
将ISPPBuiltins.iss
添加到项目中作为解决FileOpen
问题的方法是没有意义的,因为在文本编辑器中打开文件表明其中不存在“ FileOpen”。我看不到任何嵌入式文件。看起来编译器在文件中不喜欢“; BEGIN ...”,但是我离题了。这个想法真是太重要了。
关于如何使用FileOpen
解决我的未知标识符问题的想法?
答案 0 :(得分:1)
FileOpen
是preprocessor函数。您不能在具有its own function library的Pascal脚本代码中使用它。
要获取快速而肮脏的解决方案,请使用LoadStringFromFile
。
要获得更干净的解决方案,请导入CreateFile
WinAPI function。