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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.07.2014, 13:05
Denisonin Denisonin вне форума
Прохожий
 
Регистрация: 25.11.2013
Сообщения: 42
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию [IF] or - верное условие

Здравствуйте!
Есть код:
Код:
if (условие 1) or (условие 2) ... or (условие 30) then...

Как узнать какое условие верное?
Например - условие 22 оказалось верным, и выполняется then..., но необходимо узнать какое именно условие было верным.
Условия
Код:
(text = edit1.text) or (text = edit2.text) ...
MAD: пользуйтесь тэгами.

Последний раз редактировалось M.A.D.M.A.N., 16.07.2014 в 13:15.
Ответить с цитированием
  #2  
Старый 16.07.2014, 13:32
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

or здесь не подходит, похоже придётся примерно так делать
Код:
...
 prosedure ptg(ds: integer);
  begin
    Label1.Caption:='Сработало условие ' + IntToStr(ds);

    Здесь выполнение then ..

  end;

begin
 if (условие 1) then ptg(1);
 if (условие 2) then ptg(2);
 if (условие 3) then ptg(3);
 if (условие 4) then ptg(4);
end;
А если условия однотипные, напр if i=1{2,3,3 etc.} то можно и кейсом пройтись
Ответить с цитированием
  #3  
Старый 16.07.2014, 14:08
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Alegun
or здесь не подходит, похоже придётся примерно так делать
Код:
...
 prosedure ptg(ds: integer);
  begin
    Label1.Caption:='Сработало условие ' + IntToStr(ds);

    Здесь выполнение then ..

  end;

begin
 if (условие 1) then ptg(1);
 if (условие 2) then ptg(2);
 if (условие 3) then ptg(3);
 if (условие 4) then ptg(4);
end;
А если условия однотипные, напр if i=1{2,3,3 etc.} то можно и кейсом пройтись

Код:
...
 prosedure ptg(ds: integer; condition:  boolean);
  begin
    if condition then
    begin
      Label1.Caption:='Сработало условие ' + IntToStr(ds);

      Здесь выполнение then ..
    end;
  end;

begin
 ptg(1, a=b);
 ptg(2, a=b);
 ptg(3, a=b);
 ptg(4, a=b);
end;
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #4  
Старый 16.07.2014, 14:20
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Да фиг его знает, Мэд, какие там у ТС условия, может совершенный разнобой, да и если совсем по-чесноку, непонятно, зачем такой результат вообще нужен, сработало - да и так хорошо, проще тогда просто ифзенами обойтись
Ответить с цитированием
  #5  
Старый 16.07.2014, 22:29
phomm phomm вне форума
Новичок
 
Регистрация: 07.10.2013
Адрес: Тюмень
Сообщения: 50
Версия Delphi: 7/2007/XE+/FPC
Репутация: 22
По умолчанию

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

Вообще, 30 эдитов говорят, что Вы делаете что-то неправильно. Поглядите на компонент TStringGrid на вкладке Additional палитры компонент, лучше использовать его для структурированного ввода теста, а не плодить эдиты. В гриде сделать проверку циклом тоже просто и определить, в какой ячейке нашлось совпадение текста.
Ответить с цитированием
  #6  
Старый 17.07.2014, 10:36
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Цитата:
Сообщение от phomm
Вообще, 30 эдитов говорят, что Вы делаете что-то неправильно.
Я раньше так же думал. А потом оказалось, что много визуальных компонентов иногда все-таки нужно.
Примеры (из моих проектов):



__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #7  
Старый 17.07.2014, 12:04
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Aristarh Dark, они хоть динамически на форму кладутся?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #8  
Старый 17.07.2014, 12:09
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Да ты что, только вручную, только хардкор
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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