Wen juckt das überhaupt wie der intern aufgebaut ist?
Da ist in der Tat was dran. Rein von der Speicherstruktur sehe ich da kein wirkliches Hindernis. Allerdings gibt es etliche Stellen im Source, bei denen implizit eine String-Länge und auch die Indizierung mit 32-Bit angenommen wird. Das ist ein nicht zu unterschätzender Aufwand, unweigerlich begleitet von potentiell signifikanten Fehlerquellen.
Übrigens ist
WideString auch keine Alternative (eigentlich sogar ein Rückschritt), da das interne Datenformat auch hier 4 Bytes für die Länge reserviert - dummerweise diesmal in Bytes, so dass ein
WideString nur halb so lang werden darf wie ein
string.