Delphi-Quellcode:
var s: string;
begin
s := 'elelelel';
delete(s,5,1);
s[length(s)+1] := 'o'; {so etwas passiert bei dir}
form1.caption := pchar(s)+' - '+pchar(copy(s,1,length(s)));
ein PChar muss zwingend ein #0 am schluss haben, ein string jedoch nicht. Durch Speicherverkleinerung, d.h. löschen von Buchstaben
innerhalb eines String, kann es sein, dass am schluss eben nicht #0 gesetzt wird sondern nur die Stringlänge angepasst wird.
das Beispiel oben verdeutlich es.
Eine Kopie des Strings zeigt es richtig an.
Eigentlich sollte aber Delphi in der Lage sein bei einer String to PChar Umwandlung dem PChar am schluss nen #0 dranzuhängen.
Wenn du da nicht irgend nen müll baust