ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Главная  / Поддержка  / Форум  / Публичные форумы  / Программирование приложений  / Принудительное завершение работы пользовательской функции

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Принудительное завершение работы пользовательской функции
 
В Бэст 5 столкнулся с такой особенностью .Вот код:
Код
Private aDial
aDial:={}
altd()
dbpush()
sayandwait('1')
iF(empty(aDial),return, )
 dbpop()
return
 
При запуске плагина программа ругается на ошибку в строке
Код
iF(empty(aDial),return, )
Если его переписать так :
Код
  if empty(aDial)
    altd()
    sayandwait('2')
    return 
  endif
 
То "ругани " нет. В Бэст 4 первый вариант работал без проблем.
Почему в " крутом Бэст5 " , увы , выдаётся ошибка.

Кроме того, если переменную объявить так :
Код
Private aDial:={}
Т.е сразу же присвоить ей значение,то плагин
Код
altd()
dbpush()
  if empty(aDial)
    altd()
    sayandwait('2')
    return 
  endif
dbpop()
return

 
вообще перестаёт замечать условие
Код
 if empty(aDial)
Вроде бы писали, что Бэст5 в части программирования более "продвинутый" ,чем Бэст 4??
 
Добрый день.

1. RETURN - это команда, она не может использоваться как операнд. И в БЭСТ-4 она не могла использоваться. Проверил. Компилятор воспринимает return как переменную. Мне кажется, вы что-то путаете.
2. Не замечал никаких проблем с присвоением значения вновь объявляемой переменной. Проверил сейчас Ваш пример. Всё отрабатывается штатно.
С уважением, Новиков Алексей.
 
Цитата
Алексей Новиков пишет:
Добрый день.

1. RETURN - это команда, она не может использоваться как операнд. И в БЭСТ-4 она не могла использоваться. Проверил. Компилятор воспринимает return как переменную. Мне кажется, вы что-то путаете.

Здравствуйте!
Бэст5

1 .Прошу простить мою неграмотность ( программирование изучаю по Вашим ответам)
Переписал код с использованием кодового блока

Код
dbpush()
Private aDial
aDial:={}
altd()
sayandwait('1')
If (empty(aDial),(eval({||sayandwait('2')}),dbpop(),return), )
 dbpop()
return

 

Всё работает как надо! Сообщение "2" появляется.


2.
Цитата
Алексей Новиков пишет:
Добрый день.
2. Не замечал никаких проблем с присвоением значения вновь объявляемой переменной. Проверил сейчас Ваш пример. Всё отрабатывается штатно.
Переписал то же код , но переменной сразу же после Private присвоил значение
Код
dbpush()
Private aDial:={}
//aDial:={}
altd()
sayandwait('1')
If (empty(aDial),(eval({||sayandwait('2')}),dbpop(),return), )
 dbpop()
return

 
Окно сообщений "2" так и не появилось!
 
1. То что сообщение 2 появляется не значит что команда RETURN в строке 6 работает. Скомпилируйте с предупреждениями и Вы увидите:
W0001: Неоднозначная ссылка: RETURN C:\BEST534\Server\DATA\Pro\PLUGINS\EXTENSNS\MENU_R\test1.prg[6]

2. Прогнал с отладчиком. Оба варианта работают одинаково.
https://youtu.be/Z5i0eh3BuRk
https://youtu.be/cuZzWhIDN2k
С уважением, Новиков Алексей.
Страницы: 1
Читают тему (гостей: 2)