我尝试从使用
#define
预处理器声明的数组中读取值。我已经通过以下方式做到了
#dim MYARRAY[2]
#define MYARRAY[0] 'foo'
#define MYARRAY[1] 'bar'
#define MYARRAY_SIZE 2
[Code]
procedure do_something();
var
I: Integer;
begin
for I := 0 to {#MYARRAY_SIZE} do
begin
SuppressibleMsgBox('{#MYARRAY[I]}', mbInformation, MB_OK, IDOK);
end;
end;
不幸的是,我在编译时遇到以下错误
未声明的标识符:I
有什么想法可以解决这个问题吗?
您无法访问 Pascal 脚本索引中的预处理器定义的数组,请记住 Pascal 脚本是在运行时执行的,而预处理器代码是在安装程序编译之前解释的,就像 C 预处理器一样。
因此,要访问数组元素,您必须使用预处理器
for
循环,它将生成传递给编译器的实际代码。以您的代码示例为例,它可能类似于:
#dim MYARRAY[2]
#define MYARRAY[0] "foo"
#define MYARRAY[1] "bar"
[code]
procedure do_something();
begin
#sub SupMsg
SuppressibleMsgBox('{#MYARRAY[I]}', mbInformation, MB_OK, IDOK);
#endsub
#define I
#for {I = 0; I < DimOf(MYARRAY); I++} SupMsg
end;
编译脚本时,预处理器代码将被解释并执行,并且您将获得在预处理器输出中生成的结果,其中将包含对每个元素的
SuppressibleMsgBox
的调用,在本例中:
procedure do_something();
begin
SuppressibleMsgBox('foo', mbInformation, MB_OK, IDOK);
SuppressibleMsgBox('bar', mbInformation, MB_OK, IDOK);
end;