Wobei das ja eigentlich "falsch" ist
Es müsste eigentlich
Str10; ShotString[10];
heißen, aber man dachte sich, bei der Umstellung auf die LongStrings, daß es weniger probleme mit Altcode gibt.
Drum ist String[x] auch immernoch
ANSI, obwohl der String nun ein Alias für den UnicodeString ist.
Meine Vermutung:
String war früher mal nur der jetzige ShortString und die LongStrings oder den WideString gab es noch nicht.
Im Inneren ist der String ein Record und so dachte sich der Niklaus ich mein natürlich den Herrn Wirth, daß eben reserviert zu machen, genauso wie den Record und das Array.
Delphi-Quellcode:
type
ShortString = record
Byte: Length;
Chars: array[1..x] of AnsiChar;
end;
// oder
ShortString = record
Chars: array[0..x] of AnsiChar; // 0 = Länge
end;
// oder
ShortString = type array[0..x] of AnsiChar; // 0 = Länge
Die Idee war vielleicht nicht die Beste und man hätte sich das, mit Einführung der LongStrings, vielleicht nochmal überlegen sollen, aber das ist nunal so ... Pech gehabt.
Fatit:
Fette Wörter haben absolut nichts damit zu tun, was sie sind oder machen, sondern es geht nur darum, daß es Wörter/Befehle mit einer definierten Funktion sind und Dieses sich (niemals) ändern wird.