Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > проверка на несколько совпадений


Автор: GR0Mi 28.6.2014, 03:29
не пойму как сделать if на несколько совпадений
пример иходного текста 
мама мамас мам пап папа и тд
хочу сделать что то вроде 
if мама или мамас или  мам 
пишем файл
elsif пап или папа сохраняем во 2й фай
else в 3 файл

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

в перле 
Код

if  ( ($resp=~ "мама") || ($resp=~ "мамас") || ($resp=~ "мам") ) 


как сделать также в дельфи?
уже пол гугла перерыл нечего не нашел

Автор: PointerToNil 28.6.2014, 03:58
'||' => 'or' 
rtfm! RtfM!! RTFM!!!  smile 

Автор: Poseidon 29.6.2014, 16:42
Цитата(GR0Mi @  28.6.2014,  03:29 Найти цитируемый пост)
уже пол гугла перерыл нечего не нашел
Гугл как бы и https://www.google.ru/?gws_rd=ssl#newwindow=1&q=%D0%B8%D0%BB%D0%B8+%D0%B2+Delphi

Автор: Rennigth 29.6.2014, 23:19
case погугли )))

Автор: 9thlevel 30.6.2014, 01:58
Rennigth, case работает только с перечисляемыми данными: числа, Boolean и т.п.

GR0Mi, сделай строковую переменную и заполни возможными значениями "мама мамас мам" и "пап папа", и ищи в них через Pos(Что_ищем, Где_ищем). Естественно, это неоптимально, если значений для поиска много. Хочешь более подробного совета, конкретизируй задачу.

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/proverka-na-neskolko-sovpadeny-id53ae0c8aae201517398b4567#findElement_E7045_53b099feae2015cc65cb0686_0

Автор: Poseidon 30.6.2014, 09:24
Цитата(Rennigth @  29.6.2014,  23:19 Найти цитируемый пост)
case погугли ))) 
Очень смешно. Вопрос перечитай, а потом расскажи нам, не грамотным, как применить case к строкам?

Автор: DenNik 2.7.2014, 15:02
case к строкам применить можно, но не в этом случае, ибо громоздкость кода будет стремиться к бесконечности

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/proverka-na-neskolko-sovpadeny-id53ae0c8aae201517398b4567#findElement_E7045_53b3f4ebae20157b4bcb0631_0

Автор: Akella 2.7.2014, 15:07
Цитата(9thlevel @  30.6.2014,  01:58 Найти цитируемый пост)
Rennigth, case работает только с перечисляемыми данными: числа, Boolean и т.п.


ну если скрестить с AnsiInexText...

Код

  st:=edit1.Text;

   case ansiIndexText( st , ['R', 'D', 'H']) of
      0: edit2.Text:='Вы ввели R';
      1: edit2.Text:='Вы ввели D';
      2: edit2.Text:='Вы ввели H';
    end;// case

Автор: Poseidon 2.7.2014, 15:58
Цитата(Akella @  2.7.2014,  15:07 Найти цитируемый пост)
ну если скрестить с AnsiInexText...
Не катит. AnsiInexText возвращает Integer, соответственно case работает с Integer, а не со string.  smile 

Автор: Akella 3.7.2014, 10:56
Включи моск, оберни в функцию и всё там катит ;)

Автор: DenNik 3.7.2014, 12:56
все это ерунда. нужно парсить текст, выделять слова, а уж потом искать в каждом слове необходимые куски текста

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/proverka-na-neskolko-sovpadeny-id53ae0c8aae201517398b4567#findElement_E7045_53b528dcae2015df1dcb0891_0

Автор: 9thlevel 4.7.2014, 05:46
Цитата

   все это ерунда. нужно парсить текст, выделять слова, а уж потом искать в каждом слове необходимые куски текста
   

Сенсей DeNik знает лучше нас, падаванов. Узрите силу :-D

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/proverka-na-neskolko-sovpadeny-id53ae0c8aae201517398b4567#findElement_E7045_53b61571ae20150b2acb0b29_0

Автор: navodri 22.7.2014, 21:33
Я так понял, вас это интересует:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
 str: String;
begin
 str := Edit1.Text;
 if ((str = 'мама') or (str = 'мамас') or (str = 'мам')) then
  Caption := 'МАТЬ'
 else
 if ((str = 'пап') or (str = 'папа') or (str = 'папня')) then
  Caption := 'ОТЕЦ'
 else
  Caption := 'none'
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)