while (letra <>'.')do begin
cant:=0 ;
if( letra='t') then begin
cant:=cant+1;
while(letra<>'') or (letra <>'.') do begin
read(letra) ;
cant:=cant+1 ;
end;
if(cant>maximot)then
maximot:=cant;
end;
end;
Fijate que en ese bucle si no se cumple la condición de que la letra sea una 't' cae en un bucle infinito ya que no vuelve a leer otro caracter y por tanto nunca va a ser ni una t ni un punto. Es decir deberías hacer algo así:
while (letra <>'.')do begin
cant:=0 ;
if( letra='t') then begin
cant:=cant+1;
while(letra<>'') or (letra <>'.') do begin
read(letra) ;
cant:=cant+1 ;
end;
if(cant>maximot)then
maximot:=cant;
end;
else read(letra);
end;
Algo así para que en caso de que no sea una t vuelva a leer otro caracter.
Por otro lado esta parte de código sobraría:
while(letra='')do
read(letra);
Ya que en el bucle que he citado más arriba sería suficiente.
También, aunque de esto ya estoy menos seguro, en las condiciones no deberías poner el caracter ' ' en lugar de ''? Se supone que '' es un caracter nulo o algo así no? xD, y también lo que dice Leo, deberías cambiar la condición en lugar de OR poner AND.
Haz los cambios y ya nos cuentas!
Suerte!