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


Автор: dimavit 6.8.2012, 10:11
Столкнулся с тем что сложное условие в операторе if ... then отказывается работать. А именно, в одной из процедур класса был у меня оператор
 if (довольно громоздкие вычисления) then begin ........ end; 
Возникла необходимость добавить новое условие. Казалось бы все просто - изменяю на 
if ((довольно громоздкие вычисления) and (Свойство класса<Константы)) then begin ........ end; 
И не работает, пишет что данный оператор тут неуместен. Если разбиваю это условие на 2, т.е. 
if (Свойство класса<Константы) Then if (довольно громоздкие вычисления) then begin ........ end; 
то работает. С чего бы это?

Автор: AndreyIQ 6.8.2012, 10:50
У меня тоже Ваш код не компилируется
user posted image

Автор: dimavit 6.8.2012, 11:12
Цитата(AndreyIQ @ 6.8.2012,  10:50)
У меня тоже Ваш код не компилируется
user posted image

Да я просто не могу сейчас воспроизвести код, поскольку он находится на другой машине, но можете поверить, что ifы по раздельности работают, а после их объединения с помощью and - нет.

Автор: Чучмек 6.8.2012, 11:36
Цитата(dimavit @  6.8.2012,  10:11 Найти цитируемый пост)
С чего бы это? 

Скобок где то не поставил. 

Автор: Poseidon 19.8.2012, 10:00
Цитата(dimavit @  6.8.2012,  11:12 Найти цитируемый пост)
но можете поверить, что ifы по раздельности работают, а после их объединения с помощью and - нет.
В тм и дело, что поверить сложно. Какую ошибку выдает компилятор?

Автор: gesper 19.8.2012, 11:57
Цитата(dimavit @ 6.8.2012,  11:12)
Цитата(AndreyIQ @ 6.8.2012,  10:50)
У меня тоже Ваш код не компилируется

Да я просто не могу сейчас воспроизвести код, поскольку он находится на другой машине, но можете поверить, что ifы по раздельности работают, а после их объединения с помощью and - нет.

Чушь, постоянно через and условия задаю.

Если считаешь, что проблема в твоем вычислении "громоздком", то загони его в функцию с булевым результатом.

Код

function CheckSomebody:Boolean;
begin
(довольно громоздкие вычисления) 
Result:=True\False;
end;

procedure ........
begin
if CheckSomebody and (Свойство класса<Константы) then 
begin 
........ 
end; 
end;

Автор: DYUMON 20.8.2012, 13:27
у меня работает
http://s1.ipicture.ru/Gallery/Viewfull/12594661.html

Автор: gesper 20.8.2012, 19:12
Цитата(DYUMON @ 20.8.2012,  13:27)
у меня работает
http://s1.ipicture.ru/Gallery/Viewfull/12594661.html

Сценарий кино не читал?)) Оно не может работать))))

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