The point of making a second class was to enable one of the features that Mike was looking for, i.e. hiding implementation details.
The single set field was a single property of the single example Mike initially gave. He later pointed out there are at least four different methods of operation, even adding three-way comparison/merges, meaning you need a third file parameter.
You can put these classes in separate units and have a factory method or class that instantiate the specific inner classes, and completely isolate the inner workings from the outer use, offering f.x. two compare methods.
function Compare(const aFileName1, aFileName2: string; const aMerge: Boolean = False):TResultType; overload;
function Compare(const aFileName1, aFileName2, aFileName3: string; const aMerge: Boolean = False):TResultType; overload;
Again, just a simple example based on the limited insight into all the possible variations of parameterization.
There is more than one way to solve such a challenge.
I chose to use polymorphism and encapsulation.