Besser ist aber den String selbst mit Länge direkt zu schreiben. Dann kannst du erstens auch längere Strings verschicken, zweitens werden kürzere Strings nicht mit Nullen aufgefüllt und drittens geht dann mit neueren Delphiversionen auch Unicode (ShortStrings können kein Unicode, von UTF-8 einmal abgesehen).
Wie geht das genau? So:
Delphi-Quelltext
1: 2: 3: 4:
| Stream.Write(PChar(MyString)^, Length(MyString)); ... SetLength(MyString, MyLength); Stream.Read(PChar(MyString)^, MyLength); |
Wenn wie hier die Länge des gesamten Strings schon die des Streams ist, kannst du die direkt nutzen. Du kannst aber auch mehrere Strings und andere Daten der Reihe nach schreiben. Dann kannst du die Länge jedes Strings einfach davorschreiben und dann zuerst auslesen.