Страница 1 из 1

проблема с IF

Добавлено: 23 апр 2015, 11:08
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)
         ^

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

Добавлено: 23 апр 2015, 11:36
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:=…
}

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

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

Добавлено: 23 апр 2015, 11:41
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.

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

Добавлено: 23 апр 2015, 12:13
Den
Ясен перец что так будет ругаться

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

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

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

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

Добавлено: 23 апр 2015, 16:35
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!!! какого чёрта оно не считает????

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

Добавлено: 23 апр 2015, 16:44
RAJAH
Оператор присваивания :=

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

Добавлено: 23 апр 2015, 16:55
Irina_
Если Вы меняете кусок текста своего отчета на более облегченный вариант, то старайтесь этот вариант писать без ошибок. Например, я (да думаю и другие) обращаю внимание на мелочи. В тексте, приведенном Вами
.begin
If(x4>20)
{
Fixkol=20
} else Fixkol =10;
Message(fixkol=’+Test);
End.
я обратила внимание на Message(fixkol=’+Test). Здесь я увидела 2 неточности, правильно
Message(’fixkol=’+fixkol).

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

Добавлено: 23 апр 2015, 16:57
Espada
RAJAH писал(а):Оператор присваивания :=
блин чувак, дай бог тебе здоровья)