Beim ShortString, stimmt es, denn darin liegt das Längenbyte, was übrigens auch der Grund ist, warum in alle Strings der Text bei 1 beginnt.
Abwärtskompatibilität halt.
Beom Copy ist es aber egal, da es immer bei 1 beginnt.
Im Gegenzug zu direkten Zugriffen ala s[i] werden bei Copy(s, i, 1) die Array-Grenzen beachtet.
Bei s[i] mit i<=0 oder i>=Length(s) kann man hoffentlich mit einer
Exception rechnen.