RegExpr: производилась ли подстановка, подсчет замен
Добавлено: 07.10.2016 08:32:12
Нубский вопрос, но тем не менее. Вот есть у меня кусочек кода
Процедура собственнно находит текст по регулярному выражению FExprString в тексте файла AFileName и заменяет на новую подстроку FRplcString. Проблема вот в чем. Не правило, что в тексте файла найдется вхождение регулярного выражения и каждый раз сохранять файл не имеет смысл. Кроме того, хотелось бы по колбэек функции делать подсчет замен подстроки (в файле и глобально в программе за время пробега по папкам). Но функция вопреки ожиданию возвращает значение больше -1 в любом случае. Где ошибка, как правильнее не подскажут, кто имел опыт работы с объектами класса TRegExpr?
- Код: Выделить всё
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?