Forse la mia osservazione è stuipida, però...non si sa mai.
Potrebbe accadere che i non sia mai un reale pari a 1 per via di qualche problema nella rappresentazione dei numeri;
P.Es.:
potresti aver ottenuto i=1.00000000000000000000000000001
ovviamente il codice cicla.
Prova a definire i e f come interi
var i:integer;
begin
i:=0;
while (i<>50) do
begin
write('A');
i:=i+1
end;
end.