Quizás es porque el fichero tiene caracteres raros en medio.
Puede que el fichero esté formado por caracteres Unicode de mas de un byte y por eso.
Ten en cuenta que read_file devuelve un tipo de dato AnsiString y tu lo cargas dentro de un string.
Dependiendo de la versión del Delphi, un string puede estar formado por caracteres de mas de un byte. El AnsiString solo contempla caracteres de un byte.
Código Delphi
[-]
function read_file(const FileName: String): AnsiString;
...
function cortar(archivo: String; deaca: String; hastaaca: String): String;
var text:string;
begin
text := read_file(archivo);
Si te fijas sobre el final de cut(), verás que hace una transformación de AnsiString a string;
Código Delphi
[-]
for i := 0 to (Reslength-1) do
Result := Result+Buffer[Pos(Delimit1, Buffer)+(Length(Delimit1)+i)];