为什么我们不能在inno-setup [Code]中声明局部const变量?

fub*_*bar 5 pascal inno-setup const pascalscript

你知道为什么在声明本地const变量时脚本无法编译吗?对不起,我知道很少帕斯卡尔,也无法弄清楚为什么这不起作用!

这个例子(参见CircleArea函数)显示我的语法应该没问题. http://www.tutorialspoint.com/pascal/pascal_quick_guide.htm

这就是我想要做的:

//---placed within [Code]
procedure MyLog(const _functionName, _msg: String);
begin
  Log(_functionName + '(): ' + _msg);
end;

function MyExec(const _filename, _params, _dir: String): Boolean;
const // <--- compilation fails in this line!
  MethodName = 'MyExec';
var
  ResultCode: Integer;
begin
  MyLog(MethodName, _filename);
  // ... invoke Exec(), etc. ...
end;
//---
Run Code Online (Sandbox Code Playgroud)

TLa*_*ama 9

你正在努力.如果Inno安装程序使用Pascal它甚至可以工作,但由于它是基于一种自定义Pascal Script语言,限制声明局部常量,你不能这样做.您必须全局定义常量:

[Code]
const
  MethodName = 'MyExec';

function MyExec(const _filename, _params, _dir: String): Boolean;
var
  ResultCode: Integer;
begin
  MyLog(MethodName, _filename);
  // ... invoke Exec(), etc. ...
end;
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,即使这个 `var X: Integer = 0;` 也是不允许的。我能想到的唯一方法(也考虑预处理器)是在 `var` 部分声明变量并在函数体的开头初始化它的值。 (3认同)