Ваш код будет прав в Pascal, но он не компилируется в Pascal Script.
В Pascal, если вы хотите присвоить возвращаемое значение функции, вы либо присваиваете значение «переменной» с именем функции, либо переменной Result
.
Итак, это правильно:
function GetRoot: string;
begin
GetRoot := ROOTPage.Values[0];
end;
И это тоже (оба эквивалентны):
function GetRoot: string;
begin
Result := ROOTPage.Values[0];
end;
В скрипте Pascal работает только Result
. Когда вы используете имя функции, вы получаете ожидаемый идентификатор .
Вы получаете это, когда функция вызванный из-за большого количества раздела Code
, и требуется конкретный список параметров / возвращаемое значение. Но вы не сказали нам, что вы используете для функции GetRoot
.
Есть два места, где вы можете использовать пользовательскую функцию в Inno Setup:
Check
параметр : для этого функция должна вернуть значение Boolean
и не принимать ни параметра, ни одного параметра (тип параметра определяется значением, которое вы предоставляете в параметре Check
). function MyProgCheck(): Boolean;
function MyDirCheck(DirName: String): Boolean;
string
и принимать один параметр string
, даже если в константе, заданной сценарием, не указана никакая опция. Я предполагаю, что это ваш прецедент. Если вам не нужен какой-либо параметр, просто объявите его, но не используйте его: function GetRoot(Param: String): string;
begin
Result := ROOTPage.Values[0];
end;
{code:GetRoot}
. Просто добавьте параметр dummy в объявление функцииGetRoot
. – Martin Prikryl 11 November 2015 в 21:32