У меня и другой пример есть, чуть менее очевидный (и менее реальный тоже, это да, но не сильно; если работает — увеличить N):
- Код: Выделить всё
- {$mode objfpc} {$h+}
 uses
 heaptrc, SysUtils;
 
 var
 list: array of string;
 
 function ListIndex(index: integer): integer;
 const
 N = 4;
 var
 i: integer;
 begin
 SetLength(list, length(list) + N);
 for i := 1 to N do
 list[High(list) - N + i] := '(ListIndex ' + IntToStr(i) + '/' + IntToStr(N) + ')';
 result := index;
 end;
 
 var
 i: integer;
 
 begin
 SetLength(list, 1);
 list[ListIndex(0)] := '(test)';
 
 for i := 0 to High(list) do
 write(list[i], ' '); // ожидается: (test) (ListIndex 1/N) (ListIndex 2/N) ... (ListIndex N/N)
 writeln;
 end.