Gäbe es einen schnelleren Weg?
Alle Items/Zeilen einzeln verarbeiten?
Denn schau mal nach, was .Text intern so alles macht.
Aber bei .Lines von z.B. einem Memo ist es anderesrum, da dort der Text zusammenhängend verwaltet wird und der Zugriff auf Einzelstrings daher länger dauert.
Aber in TStringList liegt jeder String einzeln im Speicher und daher muß .Text alles zu einem Gesamtstring zusammensetzen und dann wieder zerlegen.
Delphi-Quellcode:
procedure StringReplace(SL: TStrings; OldPattern, NewPattern: string;
Flags: TReplaceFlags); overload;
var
i: Integer;
begin
if (SL.ClassName = 'TMemoStrings') or (Pos(SL.LineBreak, OldPattern) > 0)
or (Pos(#13, NewPattern) > 0) or (Pos(#10, NewPattern) > 0) then
SL.Text := StringReplace(SL.Text, OldPattern, NewPattern, Flags)
else
for i := SL.Count - 1 downto 0 do
SL[i] := StringReplace(SL[i], OldPattern, NewPattern, Flags);
end;
(Achtung, das Overload ist wichtig, ansonsten die Prozedur einfach anders benennen)