Der Ansatz ist wirklich durch die Brust ins Auge und dann ins Knie... Du hast ja mehrere Suchvorgänge, wo doch ein einzelner genügt.
- Du hast eine Routine, die den Startmarker setzt
- Du hast eine Routine, die den Endmarker setzt
Statt den String zu modifizieren, läßt du dir die Position im String jeweils zurückgeben. Das Stück kopierst du heraus und verarbeitest es weiter.
Delphi-Quellcode:
...
sp:=GetStartPosition(RiesenString);
ep:=GetEndPosition(RiesenString, sp); //Sucht ab sp nach dem Ende
VielKleinererString:=copy(RiesenString, sp, ep);
//Weiterverarbeiten des VielKleinererString
BTW... Wenn du den MemoryStream in einen StringStream uschaufelst, wird dann nicht
noch eine Kopie erzeugt ?