Интересные странности BindExpression
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 5159
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Интересные странности BindExpression
Возникло недопонимание. Или у меня.
vic7tar , Вы в своём примере уберите операторы Bind. И увидите разницу.
vic7tar , Вы в своём примере уберите операторы Bind. И увидите разницу.
We are hard at work… for you. 

Интересные странности BindExpression
Ну естественно будет ошибка. А зачем их убирать?kreator писал(а): 16 Май 2019, 13:54Возникло недопонимание. Или у меня.
vic7tar , Вы в своём примере уберите операторы Bind. И увидите разницу.
C10, Win10x64
-
- ✯ Ветеран ✯
- Сообщения: 5159
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Интересные странности BindExpression
А зачем масло масляное? BindExpression прекрасно работает без Bind.
We are hard at work… for you. 

-
- ✯ Ветеран ✯
- Сообщения: 5159
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Интересные странности BindExpression
Код: Выделить всё
test Procedure()
clafile File, Driver('TOPSPEED'), Pre(cf), Name('clafile.tps'), Create, Bindable
rec Record
field1 Long
field2 Long, Name('Bind_field2')
field3 Long
field4 Long ..
rez Real
Code
! Bind(cf:rec)
! Bind('cffield4', cf:field4)
share(clafile )
BindExpression('rezult', '(cf:field1 - cf:field2 + cf:field4) * ACOS(cf:field3)')
cf:field1 = 3
cf:field2 = 2
cf:field3 = 0
cf:field4 = 1
rez = Evaluate('rezult')
Message('error = ' & ErrorCode() & chr(13) & 'rez = ' & rez)
Return
We are hard at work… for you. 

Интересные странности BindExpression
Код ошибки - 1011kreator писал(а): 16 Май 2019, 15:36 . . .
! Bind(cf:rec)
! Bind('cffield4', cf:field4)
share(clafile )
BindExpression('rezult', '(cf:field1 - cf:field2 + cf:field4) * ACOS(cf:field3)')
if errorcode() ; message(errorcode()).
. . .
C10, Win10x64
-
- ✯ Ветеран ✯
- Сообщения: 5159
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Интересные странности BindExpression
Тогда вместо share поставьте:
Код: Выделить всё
Relate:clafile.SetOpenRelated()
Relate:clafile.Open
We are hard at work… for you. 

Интересные странности BindExpression
kreator, если у Вас есть примерчик - покажите. Я привел пример на на чистом Clarion-e, без всяких методов.kreator писал(а): 16 Май 2019, 16:24Тогда вместо share поставьте:
КОД: ВЫДЕЛИТЬ ВСЁ
Relate:clafile.SetOpenRelated()
Relate:clafile.Open
Где и что мне там подправить, чтобы заработало без биндов?
C10, Win10x64
-
- ✯ Ветеран ✯
- Сообщения: 5159
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Интересные странности BindExpression
Сделайте процедуру на ABC, можно просто Source. Поставьте опцию генерить рутины открытия/закрытия файлов. В самом тексте вызовите рутину открытия файлов и после этого BindExpression заработает.
Вообще непонятно, что Вы хотите понять? Получается - BindExpression сам по себе ничего не биндит. Полагается на Bind. Но в ABC, видимо, в методах открытия файлов/таблиц этот Bind явно прописан. Поэтому можно Bind явно не указывать.
Вообще непонятно, что Вы хотите понять? Получается - BindExpression сам по себе ничего не биндит. Полагается на Bind. Но в ABC, видимо, в методах открытия файлов/таблиц этот Bind явно прописан. Поэтому можно Bind явно не указывать.
Но вот это сильно! Clean & Elegant Language!

We are hard at work… for you. 

- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1411
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Интересные странности BindExpression
Так и есть. В методе Open -> OpenServer - > BindFields -> BIND (SELF.Buffer)
Давно бы посмотрели и не спорили
Давно бы посмотрели и не спорили
Интересные странности BindExpression
kreator писал(а): 16 Май 2019, 17:48 vic7tar писал(а): ↑16 Май 2019, 16:55
Я привел пример на на чистом Clarion-e, без всяких методов.
Но вот это сильно! Clean & Elegant Language!![]()
А вот это ещё сильнее.kreator писал(а): 16 Май 2019, 15:36 Code
! Bind(cf:rec)
! Bind('cffield4', cf:field4)
share(clafile )
BindExpression('rezult', '(cf:field1 - cf:field2 + cf:field4) * ACOS(cf:field3)')
C10, Win10x64
- Игорь Столяров
- Ветеран движения
- Сообщения: 8028
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
Интересные странности BindExpression
Сейчас расскажу такое, что не в каждом цирке за деньги покажут … 
В любом MDI окне делаем вставку:
После этого окно при закрытии (!!!) вылетает с GPF (в C11 - явно, в C63 - молча).
Evaluate('CCC') отрабатывает корректно, никаких кодов ошибок - всё чисто.

В любом MDI окне делаем вставку:
Код: Выделить всё
! BIND variables
! [Priority 5800]
BindExpression('BBB',1)
BindExpression('CCC','BBB')
Evaluate('CCC') отрабатывает корректно, никаких кодов ошибок - всё чисто.

Make Clarion Great Again ! 