Quizás fuera conveniente leer todo el archivo en memoria ¿es muy grande?
Si no lo es, 2000 o 3000 registros, puedes usar un TStringList y quitarte de todos esos problemas:
Código Delphi
[-]
var Archivo:TStringList;
begin
Archivo := TStringList.Create;
Archivo.LoadFromFile('c:\mio.txt');
if Archivo.Count > 129 then Archivo[128] := 'Por la cara modifico el texto';
if Archivo.Count > 0 then
Archivo[0] := Archivo[0] + ' Añado texto a la primera fila';
if Archivo.Count > 3 then
Archivo.Insert(2,'inserto en la posición 3, recuerda empieza en cero');
Archivo.Add('añado al final este texto');
Archivo.Delete(0); Archivo.SaveToFile('c:\mio.txt');
FreeAndNil(Archivo);
end;
saludos