Nimm SetLength ... StringOfChar ist hier vollkommen übertrieben, denn du willst es ja gleich wieder überschreiben.
ABER
Wenn man man hier Read und Write verwendet, dann
muß sollte man auch deren Rückgabewerte prüfen.
Oder man nutzt ReadBuffer und WriteBuffer, welche es selber Prüfen.
PS: Wozu initialisieren?
- es wird eh überschriben, womit es dann nochmals "initialisiert" wird
- wenn es nicht richtig gelesen werden konnte, dann liegt ein Fehler vor, womit die "unvollständigen" Daten eh nichts Wert sind