Запуск скриптов lua

Страницы: 1
RSS
Запуск скриптов lua
 
Уточните, а как запускать скрипт что бы он постоянно при запуски квика автоматически сам запускался.

Просто загружаю скрипт вручную - окей, создаётся нужная таблица, и в ней соответственно выводится нужный расчёт. Выхожу из квика (закрываю полностью), запускаю заново и теперь вижу что скрипт не запускается автоматом, не создаёт какие либо таблички и не обрабатывает данные.

Как это исправить?
 
А перед выходом из квика скрипт останавливаете?
 
Часть скриптов стартует автоматом, но некоторые неприлично игнорируют автозапуск. КЛУА, в чём же дело?
 
Цитата
Роман пишет:
Просто загружаю скрипт вручную - окей, создаётся нужная таблица
SetTableNotificationCallback для таблицы используете?
 
Цитата
Вячеслав пишет:
Часть скриптов стартует автоматом, но некоторые неприлично игнорируют автозапуск. КЛУА, в чём же дело?
А если встать на нестартанувший скрипт (в диалоге выбора скриптов), что про него будет написано (внизу)?
 
Запустил 6 таблиц в QUIK 6.16.1.16 :
1) После перезагрузки, все таблицы работали.
2) После второй, не сработал 5й скрипт.
3) Все работали
4) 1й скрипт не работал.
с 6го по 11й перезапуски QUIK'а - все работали.
Несработавшие пару раз скрипты 1й и  5й содержали  SetTableNotificationCallback.
Узнаю фиременный почерк, это  нестабильность. )))
 
Цитата
Вячеслав пишет:
Несработавшие пару раз скрипты 1й и5й содержали SetTableNotificationCallback.
Код SetTableNotificationCallback в студию.
 
Код
function OnInit()
...
CreateWindow(t_delta)
SetTableNotificationCallback ( t_delta, callback_delta )
end

function main()
is_run=true while is_run do sleep(500)
...
end
end

function callback_delta(t_delta, msg, par1, par2)
if msg == QTABLE_CLOSE then OnStop() end
if msg == QTABLE_LBUTTONDOWN then
par11,par22 = par1,2
Highlight(t_delta, par11,par22, RGB(0,0,255), RGB(255,255,255), 700 )
end
SetSelectedRow(t_delta, par11)
if msg == QTABLE_CHAR then
if par11==1 then n=1000 elseif par11==2 or par11==8 then n=0.1 else n=1 end
if par2==113 or par2==233 or par2==201 or par2==81 then
SetCell( t_delta, par11, par22, tostring( GetCell( t_delta, par11, par22).image+n ))
end
if par2==97 or par2==244 or par2==212 or par2==65 then
SetCell( t_delta, par11, par22, tostring( GetCell( t_delta, par11, par22).image-n ))
end
end
end
Как то так. А оно вам точно надо?
 
Не совсем понял вашу мысль, если мы закрываем программу с работающим скриптом. То при запуски он должен автоматом запуститься и построить таблицу заново, по логике.
Или вы хотите сказать, что при каждом перезапуске квика нужно в ручную запускать скрипты - но это же ку-ку система получается.
 
Просто у меня при запуске скрипта прописано построение таблицы и он хоть как при загрузки скрипта должен построить.
 
Цитата
if msg == QTABLE_CLOSE then OnStop() end
Вот. При закрытии QUIK первым делом срабатывает колбек закрытия окна с таблицей. Поэтому часть скриптов успевают остановиться до закрытия приложения.
 
У меня нет не каких SetTableNotificationCallbackd в скрипте.

Таблицы создаются при запуски скрипта, с таблицами проблем нет, проблема в том что после перезагрузки сам скрипт не работает.
 
В ручном режиме (когда кнопку, запустить жмёшь) запускается нормально.
 
Цитата
Роман пишет:
Как это исправить?
Здравствуйте,
Если Вы его не останавливаете в каком-либо колбэке, то да он должен запуститься автоматом.
Если этого не происходит, проблема в коде и нам нужно на него взглянуть
 
Код не готов предоставлять, при каких условиях может происходить сбои запуска скрипта, за исключением ошибки в самом коде?
 
Цитата
Роман пишет:
за исключением ошибки в самом коде?
за исключением логики в коде, может влиять очистка данных в терминале, при запуске.
если при запуске терминала, Вы очищаете dat файлы, то их состояние не восстанавливается.
так состояние скриптов храниться в файле scripts.dat
 
Хорошо, посмотрю отпишу. Но мне кажется это все равно очень странно что при запуске скрипта он запускается без ошибок, а автоматически не запускает. Логично было бы если не запускались бы то все.
 
Цитата
if msg == QTABLE_CLOSE then OnStop() endВот.
При закрытии QUIK первым делом срабатывает колбек закрытия окна с таблицей. Поэтому часть скриптов успевают остановиться до закрытия приложения.
У меня все скрипты так закрывает. Или так.
Код
if IsWindowClosed(t_RM) then OnStop() end
И при перезапуске QUIK все скрипты работают. Только иногда "слетают".
 
Могу предположить, что при запуске в автомате Ваши скрипты обращаются к еще не полученным данным.
В результате получаете nil и аварийное завершение.
когда пускаете кнопкой все данные уже подгружены и такого не происходит.
 
Цитата
Вячеслав пишет:
У меня все скрипты так закрывает. Или так.
Код
 if IsWindowClosed(t_RM) then OnStop() end 
И при перезапуске QUIK все скрипты работают. Только иногда "слетают".

Состояние скрипта при следующем запуске зависит от того успел ли он становиться до сохранения его статуса (остановлен/запущен) в файл scripts.dat.
 
До сих пор нет надёжного решения обсуждаемой проблемы.
Предлагаю добавить событие QTABLE_CLOSETERMINAL для функции SetTableNotificationCallback, срабатывающее при закрытии таблицы в результате закрытия терминала.
Тогда можно будет не останавливать скрипты при закрытии терминала, если они должны автоматом стартовать.
OnClose не всегда спасает, т.к. между колбэком на закрытие таблицы и событием OnClose может пройти много времени.
Страницы: 1
Читают тему (гостей: 2)
Наверх