Откуда берется "мусор" в векторе?

Доброго времени суток.

Мне нужно преобразовать двумерный массив в одномерный. Сделал это в простом, элементарном цикле и... обнаружил, что в массив, кроме элементов матрицы, попадают какие-то "левые, мусорные" значения. Вывожу элементы матрицы в ListBox. Сначала идут "мусорные" элементы, а те, которые нужны мне - в конце. Что может работать не так?

Код кнопки, в которой описан алгоритм:

procedure TForm2.Button5Click(Sender: TObject);
begin
  counter := 1;
  ListBox1.Clear;
  for i := 1 to n do
    for j := 1 to n do
    begin
      vec[counter] := a[i, j];
      ListBox1.Items.Add(inttostr(vec[counter]));
      counter := counter + 1;
    end;
end;

Ответы (1 шт):

Автор решения: MBo

Нужно задать достаточный размер для vec - n2 элементов:

vec: array [1..n*n] of integer
→ Ссылка