Hallo,
ich möchte mit folgendem Code mehrere Dateien nach einem Suchstring durchforsten und bei Vorhandensein eben diesen ersetzen:
Delphi-Quellcode:
procedure FileReplaceString(const FileName, searchstring, replacestring: string);
var
fs: TFileStream;
S: string;
begin
fs := TFileStream.Create(FileName, fmOpenread or fmShareDenyNone);
try
SetLength(S, fs.Size);
fs.ReadBuffer(S[1], fs.Size);
finally
fs.Free;
end;
S := StringReplace(S, SearchString, replaceString, [rfReplaceAll, rfIgnoreCase]);
fs := TFileStream.Create(FileName, fmCreate);
try
fs.WriteBuffer(S[1], Length(S));
finally
fs.Free;
end;
end;
Das klappt auch sehr gut. Jetzt habe ich nur ein Problem: Ich spreche diese Prozedur mit einer Schleife an, die alle in einem Memofeld vorhandenen Dateinamen abklappert:
Delphi-Quellcode:
for i := 0 to (Memo1.Lines.Count - 1) do
FileReplaceString(Memo1.Lines[i],'Text 1','Text 2');
Auch das klappt noch.
Nun möchte ich aber nach Abhandlung dieser Schleife erfahren, wie häufig ein Ersetzen durchgeführt wurde, und wie häufig der Text nicht gefunden wurde. Und genau da bin ich mit meinem Latein am Ende. Da die Prozedur keine Funktion ist und ich keinen Rückgabewert erhalte, wird's nicht unbedingt einfacher, und ich habe im Moment keine Ahnung, wie ich daraus eine Funktion machen könnte.
Kann mir jemand einen Tipp geben?
Danke
Opa