Delphi unterstützt 2 Stringtypen - die ShortStrings und die sogenannten LongStrings (AnsiStrings). ShortString entspricht dem von Pascal bekannten 255-Zeichen String der im ersten Zeichen (mit Index 0) die Länge des Strings speichert. Die "neuen" (seit Delphi 2) LongStrings sind (genauso wie PChars) nur Zeiger auf eine Speicherstelle an der die Zeichenkette liegt und sie sind (ebenfalls genauso wie PChars) nullterminiert, dh der String wird beim ersten Vorkommen des Nullzeichens (#0) als beendet betrachtet. Wichtig dabei: das erste Zeichen eines String hat den Index 1 (und nicht 0!!) und daher hat eben das letzte Zeichen des Strings auch den Index Length(String). Das abschließende Nullzeichen wird von Delphi immer intern mitgeführt, um das muss man sich also nicht kümmern.
Abschließend sollte noch gesagt werden, dass Delphi VOR der eigentlichen Zeichenkette noch 2 32Bit Zähler mitführt, nämlich einen in dem die Länge des Strings gespeichert wird und einen Referenzzähler. Details darüber würden hier jetzt den Rahmen sprengen, aber ich schreibe gerade ein Tutorial zu den internen Details des String-Handlings von Delphi das ich dann natürlich hier veröffentlichen werde...
_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!