Hola, galmacland.
Creo que este código hace lo que indicas:
El uso del tipo double es por si el valor del factorial se hace mayor que
el mayor valor admitido a un entero.
Function Factorial(n:Integer): Double;
var
k:Integer;
f: Double;
begin
f:=1;
for k:=1 to n do f:=f*k;
Result:=f;
end;
procedure Calcular;
var
m1:Array[0..9] of integer;
m2:Array[0..9] of Double;
k:Integer;
begin
for k:=0 to 9 do begin m1[k]:=k;
m2[k]:=Factorial(k);
end;
end;
Saludos.