"Неизвестный идентификатор FileOpen" при попытке обнаружить заблокированный файл в коде Inno Setup
Я пытаюсь использовать 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
не устарел.
Я сделал поиск в Google, но ничего не произошло. Я знаю, что 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: Ожидается "НАЧАЛО".
Добавление в ISPPBuiltins.iss
к проекту как способ решения FileOpen
проблема не имеет смысла, так как открытие файла в текстовом редакторе показывает, что FileOpen там не существует. Я не вижу ни одного встроенного файла. Может показаться, что компилятору не нравится "; BEGIN..." в файле, но я отвлекся. Так много для этой мысли.
Мысли о том, как решить мою проблему неизвестного идентификатора с FileOpen
?
1 ответ
FileOpen
является функцией препроцессора. Вы не можете использовать его в коде Pascal Script, который имеет свою собственную библиотеку функций.
Для быстрого и грязного решения используйте
LoadStringFromFile
,Для более чистого решения импортируйте
CreateFile
Функция WinAPI.