проблема с IF

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

проблема с IF

Сообщение Espada »

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

Код: Выделить всё

...
.begin
if (x4>20, fixkol=20,x1=0)
End.
...
если Х4 больше 20,то fixkol=20, а если меньше, то Х1=0.

при компилировании:

Код: Выделить всё

Ошибка: Ожидалась ")" (стр.693, поз.10 в E:\GAL_VIP\FORMS_MAV_91_2015_03\FORMS\
ТТН1_УЧ_ЕД_2015.RTF)
if (x4>20, fixkol=20,x1=0)
         ^
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Irina_
Местный житель
Сообщения: 553
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: проблема с IF

Сообщение Irina_ »

Здравствуйте. Попробуйте
.begin
if x4>20 then fixkol:=20
else x1:=0
End.

Хочу обратить внимание: в зависимости от значения x4 Вы изменяете fixkol или x1, т.е. оперируете только одной из этих переменных. Может быть, стоит в обоих случаях присваивать значения обоим переменным, т.е.
if x4>20 then
{
fixkol:=20;
x1:=…
}
Else
{
x1:=0;
fixkol:=…
}

Иначе есть вероятность получить проблемы.
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: проблема с IF

Сообщение Espada »

Irina_ писал(а):Здравствуйте. Попробуйте
.begin
if x4>20 then fixkol:=20
else x1:=0
End.

Хочу обратить внимание: в зависимости от значения x4 Вы изменяете fixkol или x1, т.е. оперируете только одной из этих переменных. Может быть, стоит в обоих случаях присваивать значения обоим переменным, т.е.
if x4>20 then
{
fixkol:=20;
x1:=…
}
Else
{
x1:=0;
fixkol:=…
}

Иначе есть вероятность получить проблемы.
на самом деле у меня условие немного побольше:

Код: Выделить всё

If(x4>20,fixkol=20,if(((83-x4*4)/3)<x3,fixkol=trunc((83-x4*4)/3)+x4,if(((83-x4*4-x3*3)/2)<x2,fixkol=trunc((83-x4*x-x3*3)/2)+x3+x4,fixkol=83-x4*4-x3*3-x2*2+x2+x3+x4)));
просто решил проверить на простом примере будет ли ошибка... спасибо сейчас попробую переделать с else.
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: проблема с IF

Сообщение Den »

Ясен перец что так будет ругаться

Код: Выделить всё

.begin
if (x4>20, fixkol=20,x1=0)
End.

Ибо это ФУНКЦИЯ выбора значения по условию (А НЕ УСЛОВНЫЙ ОПЕРАТОР IF). А результат значения функции должен быть чему то присвоен.
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: проблема с IF

Сообщение Espada »

Den писал(а):Ясен перец что так будет ругаться
Ибо это ФУНКЦИЯ выбора значения по условию (А НЕ УСЛОВНЫЙ ОПЕРАТОР IF). А результат значения функции должен быть чему то присвоен.
Пробавал переделывать ИФы как буд-то не видит условий

Код: Выделить всё

.begin
If(x4>20)
{
Fixkol=20
} else Fixkol =10;
Message(fixkol=’+Test);
End.
Начал с такого: х4 выводит нормально, показывает число, а fixkol выводит 0...
потом переделал

Код: Выделить всё

Fixkol=If(x4>20,20,if(((83-x4*4)/3)<x3,trunc((83-x4*4)/3)+x4,if(((83-x4*4-x3*3)/2)<x2,trunc((83-x4*4-x3*3)/2)+x3+x4,83-x4*4-x3*3-x2*2+x2+x3+x4)));
и та же фигня!!! Fixkol=0!!! какого чёрта оно не считает????
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: проблема с IF

Сообщение RAJAH »

Оператор присваивания :=
Irina_
Местный житель
Сообщения: 553
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: проблема с IF

Сообщение Irina_ »

Если Вы меняете кусок текста своего отчета на более облегченный вариант, то старайтесь этот вариант писать без ошибок. Например, я (да думаю и другие) обращаю внимание на мелочи. В тексте, приведенном Вами
.begin
If(x4>20)
{
Fixkol=20
} else Fixkol =10;
Message(fixkol=’+Test);
End.
я обратила внимание на Message(fixkol=’+Test). Здесь я увидела 2 неточности, правильно
Message(’fixkol=’+fixkol).
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: проблема с IF

Сообщение Espada »

RAJAH писал(а):Оператор присваивания :=
блин чувак, дай бог тебе здоровья)
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Ответить