mira yo no se si te sirva pero yo lo que haria es declarar 3 stringlist algo asi
Código:
procedure concatenararchivos;
var
Arch1, Arch2, Arch3: TStringList;
nidx: Integer;
begin
//Abre los archivos
Arch1 := TStringList.Create;
Arch2 := TStringList.Create;
Arch3 := TStringList.Create;
//Carga los valores
Arch1.LoadFromFile('c:\arch1.txt');
Arch2.LoadFromFile('c:\arch2.txt');
Arch3.LoadFromFile('c:\arch3.txt');
//Concatena
for nidx := 0 to arch2.count - 1 do
Arch1.Add(Arch2.Strings[nidx]);
for nidx := 0 to arch3.count - 1 do
Arch1.Add(Arch3.Strings[nidx]);
//Guarda el archivo concatenado
Arch1.SavetoFile('c:\Resulta.txt');
end;
pruebalo que si funciona y suerte