Habras notado que algunas veces cuando intentas leer cadenas de caracteres, estas son totalmente ignoradas por los read, por ejemplo.
uses crt;
var
    nombre:string;
    apellido:string;
begin
     clrscr;
     Write('Nombre: ');
     read(nombre);
     Write('Apellido: ');
     read(apellido);
end.
Con estas instrucciones lo mas seguro es que no te lea la segunda instruccion que la de leer el apellido, y tal vez ni siquiera te lea el nombre, es decir que al ejecutar este programa, despues de leer el nombre salga o tal ves no veas nada. esto porque el programa ignoro el segundo read, y probablemente no lea todos los que sigan y que impliquen la lectura de strings, pero si leera cualquier otro tipo de dato.
Para evitar esto, es necesario que la lectura anterior a una cadena de caracteres sea un readln, una vez leido con un readln, todas las lectuas siguientes que sean cadenas podran ser leidas con un read
uses crt;
var
    nombre:string;
    apellido:string;
begin
     clrscr;
     Write('Nombre: ');
     readln(nombre);
     Write('Apellido: ');
     read(apellido);
end.