![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Несколько значений [D6, XP]
Sonic90 © (2007-06-25 22:20:00)Подскажите пожалуйста как сделать чтобы если допустим переменная I равна Значению1 или Значению2 тогда выполнить определлённое действие(чтобы не писать два раза if I=... then)?
zorik (2007-06-26 10:26:00) [1]
case x of
1..10, 25: ShowMessage('1-10,25')
else ShowMessage('else');
end;
Однокамушкин (2007-06-26 08:52:00) [2]
> Германн © (26.06.07 02:01) [12]
Тем не менее, множества с Integer'ом действительно плохо сочетаются, можно получить трудноуловимые ошибки...
var
X: Integer;
begin
X := 65535;
if X in [65530, 65535] then
ShowMessage('Yes');
end;
Это вообще не откомпилируется - Constant expression violates subrange bounds...
var
X, A, B: Integer;
begin
X := 65635;
A := 1;
B := 65535;
{$R-}
// По умолчанию эта опция отключена
if X in [A, B] then
ShowMessage('Yes');
end;
А это откомпилируется, но условие будет считаться невыполненным, т.к. из-за ограниченности размера множества значение B, выходящее за рамки диапазона, будет проигнорировано, и проверка будет эквивалентна if X in [1]... Правда, если включить $R+, будет ошибка времени исполнения...
Так что когда речь идёт об Integer - только if (X = A) or (X = B) then, а множества - это только для Byte...
Кщд (2007-06-26 08:28:00) [3]
> если же логическая, то тогда тоже можно через нормальную
> дезьюнктивную форму...
а почему не КНФ, интересно?)
а где ссылка на теорему вычислимости на моделях?))
Германн (2007-06-26 02:01:00) [4]
> Плохиш © (25.06.07 23:05) [8]
>
>
> > Правильный Вася (25.06.07 22:55) [7]
> >
> > > А там скобочки точно круглые?
> >
> > нет, квадратные
> > это SQL влез
>
> Так ещё стоит уточнить, что только для ординарных типов,
> Integer к коим не относиться...
>
Это, простите как? Неужели у меня "палёная" справка?
Ordinal types include integer, character, Boolean, enumerated, and subrange types.
:)
Sonic90 (2007-06-26 00:52:00) [5]Всем спасибо,уже сам разобрался.
Malik (2007-06-25 23:24:00) [6]Просто хотелось поучаствовать:)))
можно исследовать список возможных значений на какую-либо математическую закономерность (если они числа) и пишеш одно условие....
если же логическая, то тогда тоже можно через нормальную дезьюнктивную форму...
Anatoly Podgoretsky (2007-06-25 23:10:00) [7]> Sonic90 (25.06.2007 22:20:00) [0]
Или по английски OR
Плохиш (2007-06-25 23:05:00) [8]
> Правильный Вася (25.06.07 22:55) [7]
>
> > А там скобочки точно круглые?
>
> нет, квадратные
> это SQL влез
Так ещё стоит уточнить, что только для ординарных типов, Integer к коим не относиться...
Правильный Вася (2007-06-25 22:55:00) [9]
> А там скобочки точно круглые?
нет, квадратные
это SQL влез ;)
Kolan (2007-06-25 22:52:00) [10]> if i in( 1, 2, 3 ) then
О я не знал Как-то странно выглядит А там скобочки точно круглые?
Правильный Вася (2007-06-25 22:42:00) [11]if i in( 1, 2, 3 ) then
Плохиш (2007-06-25 22:39:00) [12]
> чтобы не писать два раза if I=... then)?
прочитай про or
Johnmen (2007-06-25 22:39:00) [13]А где тут два раза if?
Kolan (2007-06-25 22:38:00) [14]> чтобы не писать два раза if I= then
case
Kostafey (2007-06-25 22:33:00) [15]Можно использовать множества.