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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2015, 18:54   #11
JOKER:3
Пользователь
 
Регистрация: 19.02.2013
Сообщений: 12
По умолчанию

Здесь 3 игры Portal
И 4 игры Portal 2

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Допустим у нас есть список:



Какое количество в нем игр просто "Portal", и сколько "Portal 2"? И если не сложно, укажите где именно. Я так и не могу понять, что нужно сделать.
Здесь 3 игры Portal
И 4 игры Portal 2

Последний раз редактировалось Stilet; 06.09.2015 в 10:30.
JOKER:3 вне форума Ответить с цитированием
Старый 26.08.2015, 19:09   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Отсортировать имена игр по убыванию длины. Искать начиная с самых длинных имен. Строки, в которых нашли в дальнейших поисках не учавствуют
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.08.2015, 19:11   #13
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Код:
Portal         <--  "Portal" 
Portal 1.5
Portal 2 2.9   <--  "Portal 2" 
Portal 2.5     <--  "Portal 2" 
Portal 2 2.4   <--  "Portal 2" 
Portal 0.5
Portal 3 2.4
Portal 4 2.4
Portal         <--  "Portal" 
Portal 2       <--  "Portal 2" 
Game Portal 2
Game Portal 2.5
Game Portal
Game Portal 3
А где 3-ий "Portal"?
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 26.08.2015, 20:16   #14
JOKER:3
Пользователь
 
Регистрация: 19.02.2013
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Код:
Portal         <--  "Portal" 
Portal 1.5
Portal 2 2.9   <--  "Portal 2" 
Portal 2.5     <--  "Portal 2" 
Portal 2 2.4   <--  "Portal 2" 
Portal 0.5
Portal 3 2.4
Portal 4 2.4
Portal         <--  "Portal" 
Portal 2       <--  "Portal 2" 
Game Portal 2
Game Portal 2.5
Game Portal
Game Portal 3
А где 3-ий "Portal"?
2 строка ,
JOKER:3 вне форума Ответить с цитированием
Старый 26.08.2015, 21:55   #15
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

"Portal 1.5" должно подходить под поиск "Portal" ? Выходит игры "Portal 1.5" существовать не может? А если бы просто там было написано "Portal 1", тогда уже поиск не должен его находить по слову "Portal"?

Код:
procedure TForm1.Button3Click(Sender: TObject);
var
   WantedWord: String;
   FirstWordAfterGameName: String;

   i, j, n, GamesCount: Integer;
begin
   WantedWord:='Portal';

   GamesCount:=0;

   for i:=0 to Memo1.Lines.Count-1 do
   begin
      if Pos(WantedWord, Memo1.Lines[i]) = 1 then
      begin
        n:=0;
        if Memo1.Lines[i][Length(WantedWord)+1] = ' ' then
        begin
          for j:=Length(WantedWord)+2 to Length(Memo1.Lines[i]) do
          begin
            if Memo1.Lines[i][j] = ' ' then break;
            Inc(n);
          end;
        end;

        if Memo1.Lines[i][Length(WantedWord)+1] <> #0 then
        begin
          if n > 0 then
          begin
            FirstWordAfterGameName:=Copy(Memo1.Lines[i],Length(WantedWord)+2, n);
            // тут определяйте, первое слово после игры, это версия игры или нет
            // если это не версия игры, тогда делайте Inc(GamesCount)
            ShowMessage(FirstWordAfterGameName);
          end;
        end
        else
        begin
          Inc(GamesCount);
        end;
      end;
   end;
   ShowMessage('Found words count: '+IntToStr(GamesCount));
end;
Тогда что-то вроде этого нужно?
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 06.09.2015, 05:30   #16
JOKER:3
Пользователь
 
Регистрация: 19.02.2013
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
"Portal 1.5" должно подходить под поиск "Portal" ? Выходит игры "Portal 1.5" существовать не может? А если бы просто там было написано "Portal 1", тогда уже поиск не должен его находить по слову "Portal"?

Код:
procedure TForm1.Button3Click(Sender: TObject);
var
   WantedWord: String;
   FirstWordAfterGameName: String;

   i, j, n, GamesCount: Integer;
begin
   WantedWord:='Portal';

   GamesCount:=0;

   for i:=0 to Memo1.Lines.Count-1 do
   begin
      if Pos(WantedWord, Memo1.Lines[i]) = 1 then
      begin
        n:=0;
        if Memo1.Lines[i][Length(WantedWord)+1] = ' ' then
        begin
          for j:=Length(WantedWord)+2 to Length(Memo1.Lines[i]) do
          begin
            if Memo1.Lines[i][j] = ' ' then break;
            Inc(n);
          end;
        end;

        if Memo1.Lines[i][Length(WantedWord)+1] <> #0 then
        begin
          if n > 0 then
          begin
            FirstWordAfterGameName:=Copy(Memo1.Lines[i],Length(WantedWord)+2, n);
            // тут определяйте, первое слово после игры, это версия игры или нет
            // если это не версия игры, тогда делайте Inc(GamesCount)
            ShowMessage(FirstWordAfterGameName);
          end;
        end
        else
        begin
          Inc(GamesCount);
        end;
      end;
   end;
   ShowMessage('Found words count: '+IntToStr(GamesCount));
end;
Тогда что-то вроде этого нужно?
если говорить только о портал . То сущетсвует ТОЛЬКО Portal и Portal 2
Цифры что написаны после названия игры , это сколько часов наиграно в игре! Мне нужно выполнить поиск как минимум 5 игр , и под каждую игру отдельный лейбл где написано колл-во игр в мемо.
JOKER:3 вне форума Ответить с цитированием
Старый 06.09.2015, 13:23   #17
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от JOKER:3 Посмотреть сообщение
если говорить только о портал . То сущетсвует ТОЛЬКО Portal и Portal 2
Я так понимаю, что игры могут быть любые, и мы их названий не знаем. Тогда исключать, что игры "Portal 1.5" не может быть нельзя. А в таком случае нужно полностью рассматривать всю строку с информацией про игру. То есть разложить ее на слово "часов" (если это слово не изменяется), на само число часов, а потом уже все остальное, это будет название игры, и его уже нужно будет сравнивать с заданным для поиска.

Это можно сделать как вручную, так и с помощью регулярных выражений. Но нужно точно знать, как выглядит строка с информацией про игру.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).

Последний раз редактировалось Krasiosoft; 06.09.2015 в 13:28.
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