hola federico,
tu programa tiene algunos errores, pero es difícil concentrarse en uno sino tenemos delante alguno. cuando encuentras un error en tu ejecución, es bueno que ilustres con un caso concreto. en esta ocasión lo haré yo: tu programa no funciona con la letra 'p' y la oración 'ppppppp.'; si
usas esos datos de entrada "el código parece generar un bucle inesperado o quedarse esperando una entrada adicional".
se me ocurren dos posibles estrategias para que identifiques el problema.
1. puedes ejecutar a mano tu programa para ver què valores van tomando las variables cont, caracter, letter y comparador:
en linea 8. cont --> 0
en linea 9. comparador --> ' '
en linea 11. letter --> 'p'
en linea 13. caracter --> 'p'
en linea 17. comparador --> 'p'
en linea 20. cont --> 1
en linea 22. caracter --> 'p'
...
2. puedes colocar carteles para ver el desarrollo de la ejecución. por ejemplo, agregando a la línea 22 un writeln(caracter).
con cualquiera de esas estrategias puedes plantearte la siguiente pregunta: ¿cuándo termina el loop que empieza en la línea 21?
intenta resolver ese problema primero. luego, tendrás otros problemas a resolver con ese código.
saludos
luis