yo agarraria la linea del archivo y la pongo en un string ... { readln(arch,str1)}.. como el pirmer char del string es la cantidad de letras que vas a agarrar de vez en vez hasta que encuentres el asterisco pues mandar a pasar ese char a entero con la funcion val
{ val( str1[1] , a, b )} .. ya teniendo ese entero b puedes controlar un for desde i:= 2 to b que te vaya recorriendo cada posicion de la cadena ...tienes que validar cada char de la cadena porque no sabes en que momento encontraras el * ...ese for deberia de ir dentro de otro ciclo que se repita ( longitud de la cadena/b) veces para que puedas recorrer la cadena y dentro comparar de b veces en b veces los caracteres .. en el ejemplo que pusiste seria algo como
for i:=1 to (length(str1) div 2) do
for j:=2 to 7 do
asi serian los for anidados .. para descifrar el mensaje pues no has esclarecido ningun tipo de clave .. asi que me supongo que solo esta pegado y lo que necesitas es separar la palabra en varias lineas e imprimirla en el archivo ... de ser asi fijate que el segundo for lo que hacer es picarte la palabra en b caracteres cada vez y una vez los valides pues guardalos en otro string2 auxiliar y lo imprimes en el archivo {writeln(arch,str2) si es linea a linea o write(arch,str2+' ') si es en la misma linea}.. espero haber sido de ayuda....
Val (Cadena, Numero, Código)
Cadena contiene la cadena que será procesada.
Numero es la variable de tipo numérico donde se guardará el valor de la cadena.
Código es una variable de tipo entero (Integer) que contendrá el valor de 0 si no hubo errores y un valor diferente en caso de que no se haya podido convertir la cadena, el valor de Código representa la posición de la cadena donde ocurrió el error.