Angeblich um die nötige "aufwändige" Umrechnung wegzulassen, so einer Sage nach
, denn aus der 1 wird ja intern ein 0-Offset im Char-Array.
In anderen Sprachen ist Char 0 auch das Erste.
Im Delphi stammt das davon, daß im ShortString an der 0 das Längenbyte stand und die LongStrings mit der Zählung gleich blieben, obwohl es das Längenbyte "dort" nicht mehr gibt.
Es ist somit wie in den anderen Sprachen und equivalent zu den dynamischen Arrays.
In der aktuellen
OH wird der interne Aufbau der Typen ja inzwischen sehr ausführlich erklärt.
[add]
Alter StringType mit Längenbyte
und neuer Stringtyp mit Längeninteger, aber der liegt vor dem Pointer ... ab dem Pointer kommen gleich die Chars, damit es sich direkt in PChar casten lässt.
Siehe
OH
http://docwiki.embarcadero.com/RADSt...e_Datenformate