Procedure Fact
x, fac : integer;
begin
WriteLn('Digite el numero del que desea saber su factorial : ') ;
ReadLn(x) ;
if x <=0 then
begin
fac:=0
end
else
begin
fac:= x * fac(n-1); ****** me dice que el error está ahí****
WriteLn('El factorial es:', fac)
end;
writeln(' ')
end.
fac es una variable, la estas invocando como si fuera una función.
Si querias llamar a Fact en lugar de fac, también es incorrecto. Fact está definida como un procedimiento, no como una función.
La variable n no está definida dentro del procedimiento.