у тебя получается бесконечный цикл с постоянно увеличивающимя n, конечно рано или поздно программа завершится с переполнением. в твоей программа ты самому n присваиваешь значение n * (n - 1) например при n = 5 n станет равно 20, на следующем проходе n = 20 * 19 и так далее
var
n:integer;
F:real;
begin
F := 1;
write('n = '); readln(n);
while n > 1 do
begin
F := n * F;
dec(n);
end;
writeln('F = ', F);
readln;
end.