Ich habe jetzt gerade kein XE verfügbar, aber unter XE2 entspricht das
Copy im Wesentlichen einem
Move-Befehl. Eine Kopie des
RiesenString kann ich im erzeugten Code auch nicht finden.
Du verwendest doch hoffentlich das
PosEx aus
AnsiStrings und nicht das aus
StrUtils?
Warum nutzt du eigentlich nicht den dritten Parameter von
PosEx für die Startposition der Suche? Wie es jetzt ist, beginnt die Suche immer am Anfang des
RiesenString. Deshalb musst du auch den
Marker ausblenden. Abgesehen davon ist das von der Performance her eher ungünstig. So wäre es deutlich geschickter:
Delphi-Quellcode:
p:=PosEx(Marker,RiesenString, 1);
repeat
Teilstring:=copy(Riesenstring,p,1800);
// Annahme: der nächste Marker kann erst nach dem Teilstring kommen
p:=PosEx(Marker,RiesenString, p + 1800);
//..Mache was mit dem Teilstring.. (3x weitere copy mit anderen Markern)
until p=0;