Что необходимо сделать, чтобы размер массива передавался в функцию

type 
mass = array of integer;
var
q,w: array of integer;
n,i,k: integer;
z,a,b:real;
function minellemx(p:mass):real;
Var i:integer; 
    x1:real;
    d:integer;
begin
x1 := p[0];
for i := 0 to d-1 do
if p[i] < x1 then x1 := p[i];
minellemx:=x1;
end;
begin
writeln('Введите число эллементов массива X:');
readln(n);
SetLength(q,n);
writeln('Введите эллементы массива X:');
for i := 0 to n-1 do
read(q[i]);
writeln('Введите число эллементов массива Y:');
readln(k);
SetLength(w,k);
writeln('Введите эллементы массива Y:');
for i := 0 to k-1 do 
readln(w[i]);
a:= minellemx(q);
b:= minellemx(w);
z := (a - b) / 2;
writeln(z:6:1);
readln;
end.

Так а в чем именно проблема?
Добавить и передавать параметр в функцию.

function f(username: string; age: integer): string;
begin
  f := username + ' is ' + IntToStr(age) + ' years old';
end;

begin
  writeln(f('Vasya', 20));
end.

http://mif.vspu.ru/books/pascal/procedure.html

В том, что если я возьму в качестве параметра переменную типа integer, то функция не сможет вернуть значение.

Как это связано?

Параметры

это не тип возвращаемого значения

Я о том, что происходит ошибка: “Неверное количество параметров функции”.

Так а в коде что?

Размер же надо еще передать при вызове, а не только объявить в описании функции.

В моём случае так?
a:= minellemx(q,d);

Смотря что такое q и d, и как описана функция.

Советую давать понятные имена переменным )

q- массив в основной программе, а d в максимальное число элементов массива.

В коде выше d это локальная переменная функции (еще и не инициализированная).
А в основной программе размер это видимо n

Да, Вы правы. А можно непосредственно сказать как нужно исправить мою программу, что бы при вызове был передан размер?

Так а проблема в чем именно?
Передавайте те переменные, что существуют в основной программе )
Ну и в функции используйте то, что объявлено в ее параметрах.