【发布时间】:2016-02-22 19:38:21
【问题描述】:
我需要在 Delphi 初始化块中进行初始化和数组。
您似乎不能在初始化块中使用 var 块,因为这不会编译:
initialization
var
idx : Integer;
begin
for idx := 0 to length(LastState)-1 do begin
LastState[idx] := $FFFF;
end;
end;
(第一个编译错误抱怨var):
([DCC 错误] ScheAutoInfRb2.pas(6898): E2029 语句预期但 找到“VAR”)
这也不编译(因为没有声明 idx):
initialization
for idx := 0 to length(Last_Pro2State)-1 do begin
Last_Pro2State[idx] := $FFFF;
end;
[DCC 错误] ScheAutoInfRb2.pas(6899): E2003 未声明的标识符:'idx'
我知道我可以在主单元声明中声明一个索引器,但这有几个缺点:
索引器的声明与其使用分开,但 实现部分(可能在数百行之外),以及
索引器的范围包括所有功能和过程 在实施部分。
【问题讨论】:
-
声明一个过程,在初始化部分的正上方初始化数组并从那里调用它。
-
并在你声明 LastState 的地方声明 idx。
-
初始化替换begin,变量声明在begin之前。