Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2015, 00:03   #1
JOKER:3
Пользователь
 
Регистрация: 19.02.2013
Сообщений: 12
Вопрос Поиск нужных слов в тексте [Help]

Нужно вывести в лейбл колл-во повторяющихся слов что я укажу.
Юзаю код :
Код:
procedure TForm1.Button5Click(Sender: TObject);
       var
   WantedWord, s, w: String;
   i, j, n: Integer;
begin
   WantedWord:='Potal';
   n:=0;

   for i:=0 to sMemo1.Lines.Count-1 do
   begin
      s:=sMemo1.Lines[i]+' ';
      j:=1;
      while j<=Length(s) do
      begin
         w:='';
         while s[j]<>' ' do
         begin
            w:=w+s[j];
            j:=j+1;
         end;
         if w=WantedWord then n:=n+1;
         j:=j+1;
      end;
   end;

   if n>0 then ShowMessage('Found words count: '+IntToStr(n));
end;
Что не смог сделать :
1. Я буду искать названия игр с мемо , а названия игр как правило состят из двух и более слов , например Portal ищет , а вот уже Portal 2 нет! [Ещё нужно чтобы он учитывал поиск , ведь Portal b Portal 2 это разные игры , а ессли ввести Portal посчитаются обе игры!]
2.Мне нужно указать в коде не одну игру , а где-то штучек 5 и чтобы все он их посчитал.
JOKER:3 вне форума Ответить с цитированием
Старый 26.08.2015, 02:07   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,882
По умолчанию

Как в Мемо появляется текст с названиями игр?
northener вне форума Ответить с цитированием
Старый 26.08.2015, 07:39   #3
JOKER:3
Пользователь
 
Регистрация: 19.02.2013
Сообщений: 12
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Как в Мемо появляется текст с названиями игр?
Я их туда загружаю , если я правильно понял вопрос
JOKER:3 вне форума Ответить с цитированием
Старый 26.08.2015, 07:50   #4
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от JOKER:3 Посмотреть сообщение
Нужно вывести в лейбл колл-во повторяющихся слов
Цитата:
Сообщение от JOKER:3 Посмотреть сообщение
названия игр как правило состят из двух и более слов
Так Вам нужно искать повторы слов в Мемо, или повторы строк?



Код:
procedure TForm1.Button5Click(Sender: TObject);
var
   WantedWord: String;
   i, n: Integer;
begin
   WantedWord:='Potal';
   n:=0;

   for i:=0 to sMemo1.Lines.Count-1 do
   begin
      if WantedWord = sMemo1.Lines[i] then
         Inc(n);
   end;

   ShowMessage('Found words count: '+IntToStr(n));
end;
Или я что-то не так понял?
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).

Последний раз редактировалось Krasiosoft; 26.08.2015 в 07:58.
Krasiosoft вне форума Ответить с цитированием
Старый 26.08.2015, 08:08   #5
JOKER:3
Пользователь
 
Регистрация: 19.02.2013
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Так Вам нужно искать повторы слов в Мемо, или повторы строк?



Код:
procedure TForm1.Button5Click(Sender: TObject);
var
   WantedWord: String;
   i, n: Integer;
begin
   WantedWord:='Potal';
   n:=0;

   for i:=0 to sMemo1.Lines.Count-1 do
   begin
      if WantedWord = sMemo1.Lines[i] then
         Inc(n);
   end;

   ShowMessage('Found words count: '+IntToStr(n));
end;
Или я что-то не так понял?
Повторы слов. Нужно посчитать сколько игр в моём логе.
JOKER:3 вне форума Ответить с цитированием
Старый 26.08.2015, 08:16   #6
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Так повторы слов, или названий игр? Вы же сами писали, что название игры может состоять с нескольких слов.

Я правильно понимаю, что мы вводим название игры, а программа должна посчитать количество этих названий в Memo?

Может что-то вроде этого нужно:

Код:
procedure TForm1.Button5Click(Sender: TObject);
var
   WantedWord: String;
   i, n: Integer;
begin
   WantedWord:='Potal';
   n:=0;

   for i:=0 to sMemo1.Lines.Count-1 do
   begin
      if Pos(WantedWord, sMemo1.Lines[i]) = 1 then
         Inc(n);
   end;

   ShowMessage('Found words count: '+IntToStr(n));
end;
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).

Последний раз редактировалось Stilet; 26.08.2015 в 19:35.
Krasiosoft вне форума Ответить с цитированием
Старый 26.08.2015, 08:35   #7
JOKER:3
Пользователь
 
Регистрация: 19.02.2013
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Так повторы слов, или названий игр? Вы же сами писали, что название игры может состоять с нескольких слов.

Я правильно понимаю, что мы вводим название игры, а программа должна посчитать количество этих названий в Memo?
Всё правильно , но в вашем коде если в строку написать Portal 123
Уже не найдёт!
А названия игр находятся посреди других слов.
Пример лога :
Код:
Дата Рег: 2015-03-29
LvL: 1
VAC Бан: None
Trade Бан: None
Communit Бан: None
Друзей: 2
-------<Игры #Кол-во игр>-------
Serious Sam HD: The Second Encounter 10.0 часов
Total War: SHOGUN 2 4.4 часов
Call of Duty: Black Ops II - Multiplayer 2.2 часов
Arma 2: Operation Arrowhead 1.3 часов
Dota 2 0.8 часов
Call of Duty: Black Ops II - Zombies 0.4 часов
Arma 2 0.4 часов
Portal 0.5 часов
Portal 2 2.4 часов
Victory Command 0 часов
Infinite Crisis\u2122 0 часов
Arma 2: DayZ Mod 0 часов
Arma 2: Operation Arrowhead Beta (Obsolete) 0 часов
Call of Duty: Black Ops II 0 часов
Company of Heroes: The Great War 1918 0 часов
FreeStyle2: Street Basketball 0 часов
Marvel Heroes 2015 0 часов
Total War: SHOGUN 2 - Fall of the Samurai 0 часов
JOKER:3 вне форума Ответить с цитированием
Старый 26.08.2015, 17:53   #8
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от JOKER:3 Посмотреть сообщение
но в вашем коде если в строку написать "Portal 123"
Уже не найдёт!
Все правильно, т.к. игры с названием "Portal 123" нету в списке.

Можете привести наглядный пример того, что хотите сделать?
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 26.08.2015, 18:15   #9
JOKER:3
Пользователь
 
Регистрация: 19.02.2013
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Все правильно, т.к. игры с названием "Portal 123" нету в списке.

Можете привести наглядный пример того, что хотите сделать?
Таких логов что выше идёт ещё штук 100 в мемо.
Посчитать сколько там Portal , Portal 2
JOKER:3 вне форума Ответить с цитированием
Старый 26.08.2015, 18:29   #10
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Допустим у нас есть список:

Цитата:
Portal
Portal 1.5
Portal 2 2.9
Portal 2.5
Portal 2 2.4
Portal 0.5
Portal 3 2.4
Portal 4 2.4
Portal
Portal 2
Game Portal 2
Game Portal 2.5
Game Portal
Game Portal 3
Какое количество в нем игр просто "Portal", и сколько "Portal 2"? И если не сложно, укажите где именно. Я так и не могу понять, что нужно сделать.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск слов в тексте Alla_student Помощь студентам 2 21.05.2015 09:18
Поиск слов в тексте 2 vadimmmm Паскаль, Turbo Pascal, PascalABC.NET 2 16.04.2014 09:10
Поиск слов в тексте(Строки в Паскале) ParkDI Помощь студентам 0 28.11.2010 18:03
Составить в алфавитном порядке список всех слов, встречающихся в тексте, и количество этих слов. KAPAHDAW Паскаль, Turbo Pascal, PascalABC.NET 2 17.02.2009 01:19
Поиск слов в тексте pleer Общие вопросы Delphi 5 23.09.2007 08:19