No tengo ninguno hecho, pero es fácil hacerlo... si sabes recorrar cadenas de texto carácter por carácter y algunas otras funciones... Por ejemplo, imagínate: cadena:='pepito'; length(cadena) sería 6 (tamaño de la cadena) Eso te servirá para cuando vayas a recorrer la cadena hacia atrás. cadena[4] sería la letra "i", para cuando quieras hacer comparaciones. Con eso te basta, al menos para hacerte una idea de lo que hay que hacer... ten en cuenta que, para que una frase sea un palíndromo (o una palabra), la primera letra tiene que ser igual a la última, y la segunda igual a la penúltima, así sucesivamente, hasta llegar al centro. Puedes usar un "while" que recorra la cadena mientras sea un palíndromo. Aquí te pongo un ejemplo sencillo SÓLO PARA HACERTE UNA IDEA. Si no lo entiendes, avisame y te lo explico más detenidamente, es que ahora estoy un poco liado. ¿OK? Lo que hace es recorrer la cadena comparando cada carácter con el que le correspondería. El bucle se detiene cuando encuentra una letra que no coincide, con lo cual, no sería un palíndromo. i:=1; sigue:=true; while (i<=length(cadena) div 2) and (sigue=true) do begin if cadena=cadena[length(cadena)-i)] then sigue:=true else sigue:=false; end; If sigue then writeln('La cadena es un palíndromo') else writeln('NO es un palíndromo'); Puede que este código ni siquiera funcione, es más, sólo funcionaría con palabras sueltas (no con frases). Intenta entender el código. Si fueran frases habría que tener en cuenta los espacios en blanco entre palabras, pero eso lo dejaremos para otro día. ¿OK? Suerte, y para cualquier cosa, avisa.