Пользовательские функции в Evaluate()

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Пользовательские функции в Evaluate()

Сообщение kreator »

Я выше чуть-чуть привёл вариант функции. Строчка "if not omitted(3)" отрабатывается как надо.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Пользовательские функции в Evaluate()

Сообщение Игорь Столяров »

kreator писал(а): Строчка "if not omitted(3)" отрабатывается как надо.
Да ! С этого примера и начал.
Только 3-ий параметр всегда будет NOT OMITTED не зависимо от того, указан он при вызове функции или нет ...
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Пользовательские функции в Evaluate()

Сообщение kreator »

Тогда ещё раз. Вот функция:

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

Max                  PROCEDURE  (String v1, String v2, <String v3>, <String v4>, <String v5>) ! Declare Procedure
! Start of "Data Section"
! [Priority 50]

oHH           &tagHTMLHelp
! [Priority 1300]

! End of "Data Section"
! Start of "Local Data After Object Declarations"
! [Priority 5000]

! End of "Local Data After Object Declarations"

  CODE
! Start of "Processed Code"
! [Priority 4000]
 stop(omitted(3) & ' , ' & omitted(4) & ' , ' & omitted(5))
 if not omitted(3)
   if v3>v2 and v3>v1
     return v3
   else 
     return v2
   end
 end
 if v2>v1
   return v2
 else
   return v1
 end  
Вот вызов:

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

bind('Max', Max)
stop(evaluate(Max(5,6,9)))
unbind('Max')
Вот стоп:
1.jpg
Следующий вызов:

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

bind('Max', Max)
stop(evaluate(Max(5,6)))
unbind('Max')
Вот стоп:
2.jpg
We are hard at work… for you. :)
Ответить