почему бы и нет? главное, чтобы функции были совместимы по типу и принимаемым параметрам
Код:
program Project2;
{$APPTYPE CONSOLE}
type TMyProc = procedure(param:string);
TMyArr = array of TMyProc;
procedure MyProc1(param:string);
begin
writeln(param);
end;
procedure MyProc2(param:string);
begin
writeln('ololo');
end;
var Arr:TMyArr;
k:char;
begin
Randomize;
SetLength(Arr, 2);
Arr[0]:=@MyProc1;
Arr[1]:=@MyProc2;
repeat
Arr[Random(Length(Arr))]('omg');
readln(k);
until k='q';
end.