Zitat von
Brüggendiek:
Hallo Catbytes!
Bei solchen Problemen ist es eine gute Idee, das "kritische" Zeichen (hier '&') bei den Ersetzungen durch ein garantiert nicht im String vorkommendes Zeichen (z.B. #02) zu ersetzen. Dann kommt kein '&' in den Text, das nicht umgesetzt werden muß. Als letzte Aktion ersetzt Du dann das Hilfszeichen durch das '&'.
Ansonsten geht nur der Weg, den Text zeichenweise durchzugehen. Dazu sollte man den String zweimal durchgehen: erst ermittelt und summiert man für jedes Zeichen die Länge im Ergebnis, setzt dann den Ausgabestring auf diese Summe und kopiert zeichenweise das Zeichen bzw. den Ersatzstring.
Bitte nicht den Ergebnisstring durch Verketten erzeugen - die ständige Umkopiererei frißt gewaltig Speicher.
Gruß
Dietmar Brüggendiek
Man kann auch StringReplace verwenden. Am Ende muss man einfach nur
memo2.lines.text := StringReplace(memo1.lines.text,'& # 3 8 & # 5 9 ;','& # 3 8 ;',[rfReplaceAll]);
oder eine (oder mehrere) ähnliche Zeile(n) benutzen, also die falschen Kombinationen wieder ersetzen. (Leerzeichen wie gehabt)