Начинающий. Передача параметров в процедуру.

Здравствуйте! Имел опыт программирования на более простых языках. Недавно начал программировать в ABC. Выполнял учебные задания, дошёл до массивов. Чтобы заполнять массивы, решил написать процедуру и понял, что не понимаю типов. PascalABC версия 3.1 сборка 1246 (23.05.2016):

program filarray;

procedure i_fillar(ia_rand: array of integer);
var
  i: integer;
begin
  random();
  for i := 0 to ia_rand.Length-1 do
        ia_rand[i] := random(ia_rand.Length);
end;
var
  arr: array of integer;
  a22 : array [1..6] of integer;
begin
  SetLength(arr,10);
  i_fillar(arr);
  writeln(arr);
  i_fillar(a22);
  writeln(a22);

end.

Т.е., смысл такой - в тексте программы вызывается процедура, которая заполняет массив случайными числами, а уже потом в теле головной программы занимаюсь тренингом. Когда в процедуру заполнения передаю динамический массив(arr), вроде получаю результат. Но когда решил попробовать передать статический (a22), то получил ошибку:

fillar.pas(20) : Нельзя преобразовать тип array [1..6] of integer к array of integer

Статический массив не может быть заполнен с помощью динамического, поэтому возникает такая ошибка. В данном случае можно создать процедуру, возвращающую

array[1..6] of integer;

Спасибо! А как тогда должна выглядеть процедура, чтобы ра ботать с любыми массивами - хоть статическими, хоть с динамическими? Ну, и в дополнение - а если массив тип real?

Имеется ввиду - процедура работает с массивом integer(формальный параметр), а фактический параметр - real или integer.

В Паскале такого не бывает: это два разных типа.

Да, читал, но вдруг, как говорится, читать внимательнее надо. Тогда к 1-ой части - как всёзтаки сделать, чтобы процедура могла обрабатывать массив (пусть integer только), но любой величины (или и статический и динамический)? Ну, и видимо, для разномерных(одно-, дву- и т.д. мерных) должны быть разные процедуры?

в топку статические массивы. используйте только динамические массивы. они быстрее к тому же

Вам ведь ответили, что типы - разные. Что мы делаем, когда надо обрабатывать разные типы в качестве параметра? Правильно, вспоминаем волшебное слово “перегрузка”.

Конечно, это нестрогий ответ на Ваш вопрос, потому что процедур придется делать две, но зато при вызове они будут работать, как одна, единая.