- Код: Выделить всё
- procedure TFileReplacer.FileRelpacerFound(FileIterator: TFileIterator);
 var
 AFileName: AnsiString;
 begin
 AFileName:=UTF8ToSys(FileIterator.FileName);
 if FileExistsUTF8(AFileName) then
 begin
 FFileText.LoadFromFile(AFileName);
 FRegexObj.Expression := FExprString;
 FFileText.Text:=FRegexObj.Replace(FFileText.Text, FRplcString, False);
 if FRegexObj.SubExprMatchCount>-1 then
 begin
 FFileText.SaveToFile(AFileName);
 if Assigned(FOnFileChanged) then
 FOnFileChanged(Self);
 end;
 end
 end;
Процедура собственнно находит текст по регулярному выражению FExprString в тексте файла AFileName и заменяет на новую подстроку FRplcString. Проблема вот в чем. Не правило, что в тексте файла найдется вхождение регулярного выражения и каждый раз сохранять файл не имеет смысл. Кроме того, хотелось бы по колбэек функции делать подсчет замен подстроки (в файле и глобально в программе за время пробега по папкам). Но функция вопреки ожиданию возвращает значение больше -1 в любом случае. Где ошибка, как правильнее не подскажут, кто имел опыт работы с объектами класса TRegExpr?



