syssr.inc 766 B

123456789101112131415161718192021222324252627282930313233343536
  1. var
  2. Srch,OldP,RemS: SRString; // Srch and Oldp can contain uppercase versions of S,OldPattern
  3. P : Integer;
  4. begin
  5. Srch:=S;
  6. OldP:=OldPattern;
  7. if rfIgnoreCase in Flags then
  8. begin
  9. Srch:=SRUpperCase(Srch);
  10. OldP:=SRUpperCase(OldP);
  11. end;
  12. RemS:=S;
  13. Result:='';
  14. while (Length(Srch)<>0) do
  15. begin
  16. P:=AnsiPos(OldP, Srch);
  17. if P=0 then
  18. begin
  19. Result:=Result+RemS;
  20. Srch:='';
  21. end
  22. else
  23. begin
  24. Result:=Result+Copy(RemS,1,P-1)+NewPattern;
  25. P:=P+Length(OldP);
  26. RemS:=Copy(RemS,P,Length(RemS)-P+1);
  27. if not (rfReplaceAll in Flags) then
  28. begin
  29. Result:=Result+RemS;
  30. Srch:='';
  31. end
  32. else
  33. Srch:=Copy(Srch,P,Length(Srch)-P+1);
  34. end;
  35. end;
  36. end;