Ошибка "invalid argument" возникала при попытке переопределить размер массива внутри вызываемой повторно процедуры
procedure ArrayResizeTest(qty: integer);
var
TestArrray: array of IcmDictionary;
begin
SetLength(TestArrray, qty);
ShowMessage(Length(TestArrray));
end;
begin
for i := 1 to 2 do
ArrayResizeTest(i);
end;