Unter D2007 funktioniert's bei mir wie für XE3 beschrieben, also 2 MessageBoxen ohne
Exception. In der Zeile
FTest := aString + ' hurz';
ändert sich Pointer(FTest), während Pointer(AString) gleich bleibt. Scheinbar wurde in LStrCat3 (was laut CPU-Ansicht aufgerufen wird) Parameter-Aliassing (oder wie das jetzt heißt) berücksichtigt. Vielleicht ist das der großen
Unicode-Transmogrifikation zum Opfer gefallen... aber, wenn's beim OP unter XE3 auch läuft, eher nicht.
Edit: Unter XE6 funzt's auch.