El problema es que estas usando archivos binarios y tratando de producir un archivo de texto.
Código Delphi
[-]
var
Form1 : TForm1;
R01 : TextFile; R02 : TextFile;
Esto, porque writeln solamente tiene sentido en archivos de texto.
El "montaje" de los nombres ocurre porque, al grabar un archivo binario, (file of record) almacenará tantos caracteres como tenga reservados el registro para la cadena del nombre y del apellido, y evidentemente estos espacios no están resultando suficientes.
Hasta luego.