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!