Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.12.2017, 19:07
TheLisikFox TheLisikFox вне форума
Прохожий
 
Регистрация: 20.12.2017
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Поиск совпадений Delphi 7

Всем доброго дня!
Впервые пытаюсь писать программу на Delphi и ни как не получается последняя часть.
Имеется файл .txt в котором записано несколько словосочетаний, каждое в новой строке.
И имеется второй файл также .txt в котором произвольный текст.
Путь к файлам определён через переменные.
Нужно написать программу, которая считывает эти 2 файла и если во втором файле (произвольный текст) находиться совпадение хоть по 1 из словосочетаний (находит совпадение по 1 из строке) из первого файла, выводиться сообщение "Найдено". В противном случае "Не найдено".
Ответить с цитированием
  #2  
Старый 20.12.2017, 19:41
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия 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 заменить все переводы строк на одиночнык пробелы.
Ответить с цитированием
  #3  
Старый 20.12.2017, 22:11
TheLisikFox TheLisikFox вне форума
Прохожий
 
Регистрация: 20.12.2017
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Спасибо, завтра попробую подогнать этот код.
Ничего не будет разбито, поэтому код должен подойти.
Отпишусь сразу как опробую.
Ответить с цитированием
  #4  
Старый 21.12.2017, 18:53
TheLisikFox TheLisikFox вне форума
Прохожий
 
Регистрация: 20.12.2017
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Прошу прощения, в Delphi ещё плохо разбираюсь.
Можете пожалуйста подправить код.
Находиться в самом конце.
Путь к файлам в переменных:
SignatureFileName - файл с тем что нужно искать,
CheckFileName - проверяемый файл.
1, 2 и 3 это файлы с произвольным текстом.
Если найдёт хоть 1 строку из искомых должно вывести сообщение "Найдено". Если нету, то "Не найдено".
Ссылка на Яндекс диск с программой.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:51.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter