laenge gibt die Anzahl der Zeichen im String an, WriteBuffer und ReadBuffer erwartet aber die Anzahl der Bytes. Ein WideChar hat 2 Bytes. Deswegen kommen nur die ersten 11 Zeichen an.
Bei der Einbehaltung der Übergabe von PChar ergäbe sich das Problem erst gar nicht. Oder?
fS.WriteBuffer(laenge,sizeOf(PChar));
??