Ist das echt legitim, einen String mit sich selbst ändern zu wollen?
Warum nicht?
Delphi-Strings sind referenzgezählt
und bei Änderung greift ein automatisches CopyOnWrite.
Also die "Kopie" in dem Parameter behält die Referenz und für das Result wird ein neuer String erstellt und da dann reingegeben.
PS: Auch
s := s + '1' + s + '2';
ist eigentlich ein Funktionsaufruf, für den sich in der System-
Unit ein paar Funktionen verstecken. (mit bissl CompilerMagic für Funktionen mit einer unbestimmten Anzahl an Parametern, welche man leider nicht für eigene Funktionen verwenden darf
)
s := Concat(s, '1', s, '2');