WWW.TERSY.RU

 
Быстрый переход:
Поиск по форуму   Перейти к предыдущей теме   Перейти к следующей теме   Последние сообщения   Регистрация
  Версия для печати   
  IF--ENDIF
Автор Сообщения
#1 - 28.05.2009 11:36

Можно ли в условном опрераторе пречислять условия через AND или OR?

Например
if VAR1=True AND VAR2=False then
...
...
...
end_if

компилятор не ругается но работает так как будто *AND VAR2=False * вообще не написано.

#2 - 28.05.2009 12:04
Neurox
Можно ли в условном опрераторе пречислять условия через AND или OR?

Например
if VAR1=True AND VAR2=False then
...
...
...
end_if

компилятор не ругается но работает так как будто *AND VAR2=False * вообще не написано.


Здравствуйте!
Перечисление условий в операторе IF допускается. В вашем конкретном случае необходимо заключить перечисляемые условия в скобки: if (VAR1=True) AND (VAR2=False) then... Подобная запись решит проблему.


Изменено: flash, 28.05.2009 14:07

#3 - 28.05.2009 14:01
Со скобками работает1
Спасибо!

#4 - 28.05.2009 14:25
Мы еще раз проверили работу нашего компилятора. Ваш пример обрабатывается компилятором совершенно правильно: сначала исполняется операция AND, имеющая более высокий приоритет, а затем операции сравнения. Т.е. ваш ваше условие разбирается в следующем порядке:
(1) TRUE and VAR2
(2) VAR1 = (1)
(3) (2) = FALSE

При таком порядке разбора действия внутри IF будут выполнены в случае, когда VAR1 и VAR2 имеют разные значения.

Ради интереса мы проверили компиляторы Delphi5 и Visual Studio 2008.
Так вот, Delphi работает точно так же, как наш компилятор, а компилятор VS сначала выполняет сравнения, а только потом операцию AND.

Чтобы не возникало проблем подобного рода рекомендуется использовать скобки для явного указания приоритетов операций.

#5 - 28.05.2009 15:05
flash.
....когда VAR1 и VAR2 имеют разные значения.



Все верно. без скобок условие срабатывало в 2х случаях: VAR1=true VAR2=False и наоборот.
а мне как раз надо было чтобы в одном случае один код выполнялся а в другом другой. А т.к. привык на С писать то и в томже стиле и писал. Скобки ,вобщем, проблему решили)))


#6 - 28.05.2009 15:46
Кстати, когда обновление до 3.2.21 выйдет?

#7 - 28.05.2009 16:01
Выпуск обновления Каскад-САУ до версии 3.2.21 запланирован на июнь.



Главная Письмо

607190, Россия, Нижегородская обл., г.Саров, а/я 112
Телефоны: (83130) 6-97-27, 3-09-27, 6-99-81
Факс: (83130) 6-97-27
Использование материалов сайта без письменного
разрешения правообладателя запрещено
© НТО «Терси-КБ», 1995-2019