Ein "normaler" Pascal-String hat am Anfang soweit ich weiß ein DWORD als Längenbeschreibung, wieso nicht das auslesen?
Delphi-Quellcode:
function MyLen(S: string): Integer;
begin
Result := PDWORD(Integer(S)-4)^;
end;
Edit: Da war ein Adressoperator zu viel