«Неизвестный идентификатор FileOpen» при попытке обнаружить заблокированный файл в коде Inno Setup - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь использовать FileOpen в коде Inno Setup, однако компилятор 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 не устарел.

FileOpen

Iсделал поиск в гугле, но ничего не оказалось.Я знаю, что Inno Setup использует Pascal Script, а не 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?

1 Ответ

0 голосов
/ 08 октября 2018

FileOpen - это препроцессор .Вы не можете использовать его в коде Pascal Script, который имеет свою собственную библиотеку функций .

...