Показать сообщение отдельно
  #2  
Старый 20.12.2017, 19:41
lmikle lmikle сейчас на форуме
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,100
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
function HasMatches(ATextFile, APatternFile : String; ACaseSensitive : Boolean = False) : Boolean;
var
  slText, slPattern : TStringList;
  I : Integer;
begin
  Result := False;
  slText := TStringList.Create;
  slPattern := TStringList.Create;
  Try
    slText.LoadFromFile(ATextFile);
    slPattern.LoadFromFile(APatternFile);
    If Not ACaseSensitive Then 
      Begin 
        slText.Text := AnsiUpperCase(slText.Text);
        slPattern.Text := AnsiUpperCase(slPattern);
      End
    For I := 0 To slPattern.Count-1 Do
      Begin
        Result := Pos(slPattern[i],slText.Text) > 0;
        If Result Then Break;
      End;
  Finally
    slText.Free;
    slPattern.Free;
  End;
end;  
Останавливается после первого совпадения.
Не найдет совпадение, если искомое выражение "разбито" по разным строкам. Если надо - то надо в slText.Text заменить все переводы строк на одиночнык пробелы.
Ответить с цитированием