Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 629

/ вопрос открыт /

Здравствуйте, уважаемые эксперты! Не могли бы вы объяснить как реализовать программый поиск определенного слова в текстовом файле? Как пример: функция "антимат" у irc бота! Все 10 ругательных слов я ввел в код (т.к. не умею иначе) а хотелось бы для этого использовать отдельный txt файл. Код представленный ниже - реализация функции "антимат" у бота, которая стоит у меня сейчас.

Приложение:
  1. procedure TForm1.IdIRC1Message(Sender: TObject; AUser: TIdIRCUser;
  2. AChannel: TIdIRCChannel; Content: String);
  3. begin
  4.  
  5.  
  6.  


Fen-Omen Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Fen-Omen (статус: Посетитель)
Вопрос отправлен: 14 июня 2007, 00:15
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

Грузи свой TXT-файл в List: TStringList, чтобы каждое слово занимало 1 строку и было написано ЗАГЛАВНЫМИ буквами. Далее перепиши свой обработчик так (см. приложение).

Но и этот код надо доработать, т.к. он будет кикать юзеров, написавших сообщение, например, со словом "застрахуй" :). Тут нужно разбить предложение по разделителям, а также ввести все матерные слова, включая их спряжения и склонения. А также слова, в которых некоторые (или все) буквы заменены на похожие латинские.

Короче, тут есть где разгуляться интеллекту. :))))

Приложение:
  1. procedure TForm1.IdIRC1Message(Sender: TObject;
  2. AUser: TIdIRCUser;
  3. AChannel: TIdIRCChannel;
  4. Content: String);
  5. var
  6. UpperContent: string;
  7. Index: Integer;
  8. begin
  9.  
  10. Memo1.Lines.Add('<'+AUser.Nick+'> ' + Content);
  11. UpperContent:= AnsiUpperCase(Content);
  12.  
  13.  
  14. for Index:= 0 to List.Count - 1 do
  15. if Pos(List[Index], UpperContent) <> 0
  16. then begin
  17. idirc1.Kick(form1.Label1.Caption,AUser.Nick,'Learn some manere before join this channel please!!!');
  18. Exit;
  19. end;
  20. end;


Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 14 июня 2007, 08:58
Оценка за ответ: 5

Комментарий к оценке: Отлично, спасибо огромной! ПерестраХуюсь обязательно...

Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:44
Выполнено за 0.02 сек.