Мне нужно инициализировать и массив в блоке инициализации 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'
Я знаю, что могу объявить индексатор в объявлении основного модуля, но у этого есть несколько недостатков:
Объявление индексатора отделено от его использования, но раздел реализации (который может находиться на расстоянии сотен строк) и
В объем индексатора входят все функции и процедуры, описанные в разделе «Реализация».