Du greifst auf Buchstaben hinter dem Stringende zu. Das kann nicht gut gehen
Das erste Warnsignal sollten die Kästen in den Zellen des Stringgrids sein - das sind halt die Bytes die hinter dem String im Arbeitsspeicher stehen. Wenn du das ganze jetzt wieder ausliest, sind diese Zeichen nicht mehr am Ende sondern mittendrin. Und so wie das aussieht ist das 2. Zeichen der untersten Zeile ein Nullbyte, denn in der C++ Welt signalisieren Nullbytes das Ende eines Strings - und das Memo stellt nicht mehr Zeichen dar (da es ja denkt, der String ist zu Ende)