var Srch,OldP,RemS: SRString; // Srch and Oldp can contain uppercase versions of S,OldPattern P : Integer; begin Srch:=S; OldP:=OldPattern; if rfIgnoreCase in Flags then begin Srch:=SRUpperCase(Srch); OldP:=SRUpperCase(OldP); end; RemS:=S; Result:=''; while (Length(Srch)<>0) do begin P:=AnsiPos(OldP, Srch); if P=0 then begin Result:=Result+RemS; Srch:=''; end else begin Result:=Result+Copy(RemS,1,P-1)+NewPattern; P:=P+Length(OldP); RemS:=Copy(RemS,P,Length(RemS)-P+1); if not (rfReplaceAll in Flags) then begin Result:=Result+RemS; Srch:=''; end else Srch:=Copy(Srch,P,Length(Srch)-P+1); end; end; end;