Mit
TStringHelper geht das recht überschaubar:
Delphi-Quellcode:
function ConcatNoOverlap(const A, B: string): string;
var
I: Integer;
begin
for I := Min(A.Length, B.Length) downto 1 do
if string.Compare(A, A.Length - I, B, 0, I) = 0 then
Exit(A.Remove(I-1) + B);
Result := A + B;
end;