Para ordenar los registros de un archivo, lo que hago basicamente es
leer dos registros del archivo (dato1, dato2), si dato1 >dato2 (o dato1 < dato2), entonceslo que esta en dato2 lo guardo donde esta dato1 y viceversa.
seek(archivo,j);
read(archivo,dato1);
seek(archivo,j+1);
read(archivo,dato2);
if dato1 > dato 2 then begin
seek(archivo,j);
write(archivo,dato2);
seek(archivo,j+1);
write(archivo,dato1);
end;
todo esto dentro de un for y el for dentro de un repeat o while (until ordenado, etc.);