Buenas,
tengo mi Pascal algo oxidado, pero intentaré aportar algo.
Te explicaré el fallo que veo con un ejemplo:
Frase de ejemplo: "Mi amigo pepe es genial."
Con el bucle for empiezas en la letra M y le estás diciendo que:
frase
(=frase[1]='M') = 'pepe' aumente cont en 1... es decir, estás comparando un único caractater 'M', 'i', ' ', 'a', 'm'... con una cadena entera 'pepe', con lo cual, te dará error o no te dará el resultado ideal.
Una posible solución algo "chabacana", es decir, que se podría refinar bastante más, podría ser:
for i:= 1 to length (frase) do
if (frase[i]= 'p') and (frase[i+1]= 'e') and (frase[i+2]= 'p') and (frase[i+3]= 'e') then
cont:= cont + 1;
De esta forma, lo compruebas carácter a carácter, pero las cuatro letras a la vez.
Como ya te he dicho, es una posible solución ya que si por ejemplo te mandaran buscar siete u ocho palabras en un texto, lo tendrías que refinar bastante más (o dejarte los dedos y los ojos poniendo 'and').
Ah, y contador lo debes de inicializar a 0 (cont:= 0) ya que en tu código, si te ponen la frase "Hola", te diría que hay un "pepe".
Espero haberte ayudado.
Un saludo.