Yo trataría de escribir en el fichero destino directamente.
La forma más simple es AssignFile()..Rewrite()..Write()/WriteLn..CloseFile().
Además de esto, recuerda siempre utilizar los bloques try..finally y try..except.
Código Delphi
[-]
procedure lector;
var
i, j : integer;
milista : TStringList;
s : string;
F : TextFile;
FileName : string;
begin
FileName := dirE + 'final.txt';
AssignFile(F, FileName);
try
Rewrite(F);
milista := TStringList.Create;
try
for i := 0 to form1.CheckListBox1.Count-1 do begin
Application.ProcessMessages;
if form1.CheckListBox1.Checked[i] then begin
milista.LoadFromFile(form1.CheckListBox1.Items[i]);
form1.stringgrid7.Cells[0, i+3] := inttostr(i+1);
s := ExtractFileName(form1.checklistbox1.items.Strings[i]);
form1.stringgrid7.Cells[1, i+3] := copy(s, 0, 4);
form1.stringgrid7.Cells[2, i+3] := inttostr(Juliana(copy(s, 0, 13)));
form1.stringgrid7.Cells[3, i+3] := copy(s, 14, 4);
form1.stringgrid7.rowCount := i+4;
for j := 4 to milista.Count-3 do begin
if i=0 then begin form1.stringgrid7.colCount := j+1;
form1.stringgrid7.Cells[j, 0] := inttostr(j-3-numX*trunc((j-4)/numX));
form1.stringgrid7.Cells[j, 1] := inttostr( trunc((j-4)/numY)+1 );
form1.stringgrid7.Cells[j, 2] := inttostr(j-3);
end;
form1.stringgrid7.Cells[j, i+3] := copy(milista.Strings[j+2], 28, 10);
end;
form1.stringgrid7.Rows[i+3].Delimiter := ' ';
WriteLn(F, form1.stringgrid7.Rows[i+3].DelimitedText);
end;
milista.Clear;
end;
finally
milista.Free;
end;
CloseFile(F);
except
on e: Exception do
ShowMessage('Error al crear fichero : ' + FileName + #13#10 + e.Message);
end;
end;