Die o.g. Routine funktioniert nicht, wenn der neue String eine andere Länge als der alte String aufweist. Reicht Dir das?
Ich würde den Vorschlag von Norbert987 aufgreifen:
Delphi-Quellcode:
Procedure ReplaceInFile (Const aFilename, aOldString, aNewString : String);
Var
slData : TStringList;
i : Integer;
Begin
slData := TStringlist.Create;
Try
slData.LoadFromFile (aFileName);
For i:=0 to slData.Count - 1 do
slData[i] := StringReplace (slData[i], aOldString, aNewString, [rfReplaceAll]);
slData.SaveToFile(aFilename);
Finally
slData.Free;
End
End;
Falls Dir Flexibilität wichtiger als Geschwindigkeit ist, kannst Du die ReplaceFlags auch parametrisieren:
Delphi-Quellcode:
Procedure ReplaceInFile (Const aFilename, aOldString, aNewString : String; aReplaceFlags : TReplaceFlags);
Var
slData : TStringList;
Begin
slData := TStringlist.Create;
Try
slData.LoadFromFile (aFileName);
slData.Text := StringReplace (slData.Text, aOldString, aNewString, aReplaceFlags);
slData.SaveToFile(aFilename);
Finally
slData.Free;
End
End;
Diese Routine lässt sich natürlich noch optimieren. Für beide Varianten benötigst Du die
Unit 'SysUtils'