View previous topic :: View next topic |
Author |
Message |
rn
Joined: 21 Jun 2004 Posts: 5 Location: Нефедьев Ростислав Occupation: Инфософт Interests: Волгоград
|
Posted: 19 Sep 2005 12:30 Post subject: Простая программа |
|
|
Текст программы:
sayandwait("First line")
Function one()
sayandwait("in function")
Return Nil
EvalFun("one")
Эта программа выводит на экран в варианте FileEval (запуск через prg-файл):
- First line
- in function
В варианте HFileEval (запуск через hrb-файл):
- First line
Т.е вызова функции не происходит. При трассировке в отладчике замечено что программа завершает свою работу после перехода со строки 2 ("Function one").
Программа запускается в БЭСТ4+ 12.01 sp1
Что я делаю не так? |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 19 Sep 2005 12:53 Post subject: |
|
|
В харбор надо
Code: | FUNCTION main()
sayandwait("First line")
One()
RETURN NIL
FUNCTION One()
sayandwait("in function")
Return Nil |
Т.е. обязательно MAIN() во-первых, а во вторых ни каких EVALFUN() не надо - работайте как в обычном клиппере
FileEval() этого не умел вот и приходилось всякими спомогательными функциями пользоваться типа EVALFUN() FORMULPARSBLOCK() -теперь это в прошлом, их следует забывать - сразу блок кода или функция и никаких гвоздей |
|
Back to top |
|
|
rn
Joined: 21 Jun 2004 Posts: 5 Location: Нефедьев Ростислав Occupation: Инфософт Interests: Волгоград
|
Posted: 19 Sep 2005 12:58 Post subject: |
|
|
Спасибо, все заработало!
Обязательно ли тест основной программы оформлять в виде функции напр. Main? |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 19 Sep 2005 13:07 Post subject: |
|
|
Обязательно И ТОЛЬКО MAIN !!! |
|
Back to top |
|
|
Behemoth
Joined: 15 Mar 2002 Posts: 155 Location: Новиков Алексей Юрьевич Occupation: ПБОЮЛ Interests: Пермь
|
Posted: 21 Sep 2005 17:45 Post subject: |
|
|
Добрый день.
Может все зависит от того, где происходит компиляция?
В "среде разработки по F11" запускается первая найденная функция (не обязательно main), а все операторы вне функций игнорируются.
При компиляции в командной строке выполняются операторы, которые вне функций, например, будет работать следующая конструкция:
mymain()
function mymain()
return
Может зарезервируем слово MAIN за разработчиком? _________________ С уважением, Новиков Алексей. |
|
Back to top |
|
|
|