Nicht für alle Typen sind alle Operationen gleich implementiert.
String/AnsiString ist ein LongString (intern ein aufgemotztes dynamisches Char-Array).
Der Typ "String[123]" und ShortString sind ShortString (intern ein Record).
UnicodeString (seit D2009) ist auch ein LongString.
WideString ist die Kapseltung einer
WinAPI (
AllocSysString usw.).
Ich hatte mal das Problem, dass für String und Variant die Reihenfolge von "OR" anders ausgewertet wird.
Beim String->Variant kam erst das OR und dann der implizite Typcast
und bei Variant->String erst der Typcast und dann das OR, was dann fröhlich knallte.