Остановка скрипта по условию

Страницы: 1
RSS
Остановка скрипта по условию, Как остановить скрипт при определенном условии?
 
Подскажите, как остановить скрипт при определенном условии?
Насколько я понимаю OnStop для этого не подходит,  поскольку вызывается только при нажатии кнопки "Остановить" из окна "Доступные скрипты".
 
Здравствуйте,
Функция error (message [, level]) остановит работу скрипта.
 
Подскажите, еще как вывести сообщение при остановке скрипта по непредвиденной ошибке?
 
Цитата
A A пишет:
Подскажите, еще как вывести сообщение при остановке скрипта по непредвиденной ошибке?
error ("Случилась ошибка")
 
:) Спасибо!
 
Цитата
A A пишет:
Подскажите, как остановить скрипт при определенном условии?
Насколько я понимаю OnStop для этого не подходит, поскольку вызывается только при нажатии кнопки "Остановить" из окна "Доступные скрипты".
Да, вызывается при нажатии. Но никто вам не мешает вызвать ее самому:
Код
if <условие> then OnStop() end
... если в ней у вас там прописаны все необходимые действия по остановке скрипта.
 
Пробовал вызывать ее, но безрезультатно. Возможно там действительно не хватает необходимых действий. Нет ли у вас примера функции OnStop()?
 
Цитата
A A пишет:
Пробовал вызывать ее, но безрезультатно. Возможно там действительно не хватает необходимых действий. Нет ли у вас примера функции OnStop()?
Конечно. Пример есть и в документации QLUA:
Код
Stopped = false

function OnStop(signal)
   <какие-то завершающие действия>
   ...
   Stopped = true
end

function main()
   while not Stopped do
      <какие-то действия>
          ...
      sleep(10)
   end
end 
Ключевой момент - скрипт считается завершенным при выходе из функции main(). С помощью флага Stopped мы этим управляем.
 
Именно так у меня все и выглядит.
Вот так я пытался остановить скрипт:



local StopFLAG = true
local STOPSCR = OnStop(StopFLAG)


Видимо раз это не работает, значит где-то я ошибся.

Подскажите как вызвать функцию OnStop(), чтобы она сработала?
 
Цитата
A A пишет:

local StopFLAG = true
local STOPSCR = OnStop(StopFLAG)
1. StopFLAG = true должно происходить ВНУТРИ вашей функции OnStop().
2. В нее передавать ничего не надо, т.е. вызывать OnStop().
3. По правилам, если OnStop() вызывается как колбэк из терминала, то функция должна возвращать число миллисекунд ожидания до принудительного завершения main() терминалом (или ничего не возвращать, по умолчанию таймаут 5 с). У вас это так? Что такое STOPSCR?
 
Все теперь понятно. STOPSCR получается ненужный мусор.

Спасибо БОЛЬШОЕ!  
Страницы: 1
Читают тему
Наверх