Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли в операторе if задавать несколько условий? [D7, XP]


Lobach ©   (2007-05-08 12:10:00) 

Например есть переменная str. Она может иметь разные значения.
Если str=petya нужно выполнить одно действие
Если str=vasya нужно выполнить другое действие
Если str не petya и на vasya вывести сообщение
Не могу сообразить как это сделать


McSimm_   (2007-05-08 17:29:00) [1]


> P.S. И оперчаток уже не лопусить :)

Похоже, актуальная проблема :)))


{RASkov}   (2007-05-08 17:26:00) [2]

> [0] Lobach ©   (08.05.07 12:10)

Т.е. твой пример можно записать несколькими разными вариантами:
Вариант1:
if str='vasya' then <Делаем что с Васей(м)>
else //Не Вася
if str='petya' then <Делаем что с Петей(м)>
 else // Ни тот ни другой
  <Что-то делаем если не Вася и не Петя>
Вариант2:
if Str<>'vasya' then
if str<>'petya' then <Не Вася и не Петя>
else <Делаем что с Петей>
else <Делаем что с Васей>
Остальные варианты могут зависить от условий.


{RASkov}   (2007-05-08 17:17:00) [3]

> Lobach ©
if, then, else могут иметь неограниченную вложенность, и используется правило:
очередной then относится к ближайшему if, очередной else относится к ближайшему "свободному" then.
Пример:
if условие1 then
if условие2 then Это else
 if условие3 then Это else То
else To <//if условие1 then


Ega23   (2007-05-08 17:09:00) [4]


> Вот же пальцы ты развиваешь - любо-дорого смотреть


я ещё и на машинке вышивать могу...   :)


Игорь Шевченко   (2007-05-08 17:00:00) [5]

Ega23 ©   (08.05.07 12:22) [5]

Вот же пальцы ты развиваешь - любо-дорого смотреть


Loginov Dmitry   (2007-05-08 16:16:00) [6]

> Какой, нафиг case если переменная строковая.


Легко :)

case List.IndexOf(S) of
 0: ShowMessage('vasya');
 1: ShowMessage('petya');
else
 ShowMessage('not vasya and not petya');
end;


Lobach   (2007-05-08 13:30:00) [7]


> [5]

Спасибо


Kostafey   (2007-05-08 13:08:00) [8]

> лопусить

допустить


Kostafey   (2007-05-08 13:04:00) [9]

Щас опять пинать будут:

type

TParamKind = (ComboBox_, Data_, Text_);

var
 ParamKind: array[TParamKind] of string = (
   'ComboBox',
   'Data',
   'Text'
   );

...
case ParamKind[i] of
 ComboBox_: ;
 Data_: ;
 Text_: ;
end;


P.S. И оперчаток уже не лопусить :)


Elen   (2007-05-08 12:39:00) [10]


> И чего???

и "вывести сообщение" :)


Elen   (2007-05-08 12:37:00) [11]


> И чего???

и "вывести сообщение" :)


Amoeba   (2007-05-08 12:31:00) [12]


> Neket   (08.05.07 12:14) [2]
>
> Используй оператор case ... of ... else
>

Какой, нафиг case если переменная строковая.


Ega23   (2007-05-08 12:22:00) [13]

if (str='1') then
begin
 ShowMessage('1')
end
else
if (str='2') then
 begin
   ShowMessage('2')
 end
else
 begin
   ShowMessage('not 1 and not 2')
 end;


iXT   (2007-05-08 12:17:00) [14]

> [1] Elen ©   (08.05.07 12:14)
> if (str<>petya) and (str<>vasya) then ...


И чего???


iXT   (2007-05-08 12:16:00) [15]

так и делаешь
if str='petya' then

или про case почитай


Elen   (2007-05-08 12:14:00) [16]

if (str<>petya) and (str<>vasya) then ...


Neket   (2007-05-08 12:14:00) [17]

Используй оператор case ... of ... else


Наверх

Титульная страница Поиск, карта сайта Написать письмо