Strings sind referenzgezählt und eine nach Objekt gecasteter Schrott ist das nicht.
Also fliegen die Strings kurze Zeit späte wieder aus dem Speicher, aber deine "Zeiger" zeigen immernoch auf die nicht mehr vorhandenen Strings.
* Strings "ordentlich" kopieren und nicht die Referenzzählung schrotten
* oder mit PChars arbeiten (StrNew StrDispose)
* oder richtige Daten-Objekte benutzen