--- ---

The following routine merges a file of files specified in a string list (Files) into a single target file (TargetFile) whose name is specified as a string. Note TargetFile should not also be in Files or an error will be reported.

    procedure MergeFiles(const Files: TStrings; const TargetFile: string);
    var
      I: Integer;
      InStm, OutStm: TFileStream;
    begin
      OutStm := TFileStream.Create(TargetFile, fmCreate);
      try
        for I := 0 to Pred(Files.Count) do
        begin
          InStm := TFileStream.Create(Files[I], fmOpenRead);
          try
            OutStm.CopyFrom(InStm, 0);
          finally
            InStm.Free;
          end;
        end;
      finally
        OutStm.Free;
      end;
    end;

Original code contributed by Rubem Nascimento da Rocha and adpated by Peter Johnson