Получить имя исполняемого скрипта.

Страницы: 1
RSS
Получить имя исполняемого скрипта., Возможно?
 
Есть функция, возвращающая путь, по которому находится исполняемый скрипт - getScriptPath(). Можно прочитать литеру диска и имена папок.
А имя самого файла-скрипта можно как-то получить? Может быть средствами LUA?
Спасибо.
 
Цитата
green_X5 пишет:
Есть функция, возвращающая путь, по которому находится исполняемый скрипт - getScriptPath(). Можно прочитать литеру диска и имена папок.
А имя самого файла-скрипта можно как-то получить? Может быть средствами LUA?
Спасибо.
Колбек OnInit вам это расскажет
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Точно, есть такой колбэк, совсем про него забыл, давно не применяю )
Спасибо, Михаил!
 
А в основном теле скрипта, вне колбэков, никак не узнать?
Проблема в том, что имя файла-скрипта нужно для начального задания множества глобальных переменных-констант. Если точнее - имён Name граф. элементов vclua. А колбэк OnInit() срабатывает уже ПОСЛЕ прохождения тела скрипта...
Можно конечно инициализировать весь vclua в OnInit(), но стрёмно как-то... ))
 
Добавлю для картины понимания общей задачи - создаём вторую копию скрипта, дописываем к его имени файла уникальный хвостик, запуск, хвостик считывается и создает уникальные имена элементов vclua. Т.о. два скрипта не мешают друг другу в библиотеке vcl.
Заранее признателен за идеи.
 
Код
debug.getinfo(1).short_src
 
Всё работет, Михаил, спасибо! )
 
Цитата
green_X5 пишет:
к его имени файла уникальный хвостик, запуск, хвостик считывается и создает уникальные имена элементов vclua. Т.о. два скрипта не мешают друг другу в библиотеке vcl.
Заранее признателен за идеи.
Можно поподробнее о самой проблеме с vclua и именами?
И еще: какую версию vclua вы используете? там в разных версиях разный подход применён к формированию имён.
 
swerg,
да нет проблем, уже есть быстро решенная задача. ) Назначаю имена принудительно, чтобы потом ловить events по Name в общем обработчике. Появилась потребность запускать несколько экземпляров скрипта для работы с разными бирж. тикерами и patch-ми к файлам обмена. Соотв. решил задачу как описал выше.
Можно конечно было решить по-другому - дать именам самогенерироваться и потом их перехватить в переменные. Но так получилось комплекснее под мои задачи.
Ваша qvcl, что на базе vcl 0.5.0, c хаком от Михаила.
 
Цитата
green_X5 пишет:
swerg ,
да нет проблем, уже есть быстро решенная задача. ) Назначаю имена принудительно, чтобы потом ловить events по Name в общем обработчике. Появилась потребность запускать несколько экземпляров скрипта для работы с разными бирж. тикерами и patch-ми к файлам обмена. Соотв. решил задачу как описал выше.
Можно конечно было решить по-другому - дать именам самогенерироваться и потом их перехватить в переменные. Но так получилось комплекснее под мои задачи.
Ваша qvcl, что на базе vcl 0.5.0, c хаком от Михаила.
А не проще в качестве уникального идентификатора взять номер потока, исполняющего main?
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru пишет:
А не проще в качестве уникального идентификатора взять номер потока, исполняющего main?
Насчет простоты - наверное то же самое. Прочитать хвостик названия файла-скрипта вроде не проблема. )
А вот насчет остального наверное мой вариант поудобнее будет. Как я уже написал, кроме Name, уникальными и опознаваемыми создаются и фалы логов и обмена, к которым "новому" скрипту предстоит обращаться и при следующем запуске.
Например скрипты bot+one.lua и bot+two.lua создадут логи log_bot_one.log и log_bot_two.log, файлы обмена с такими же окончаниями, Name vcl тоже уникальны.
 
Вот такой чтец хвостика получился. С паттернами и регулярными пока не совсем подружился ))

Код
id="+noname";
id=string.sub(string.match(debug.getinfo(1).short_src or id, "%+%w+") or id,2);
 
Обнаружил, что debug.getinfo(1).short_src для компилированного файла выдаёт его путь и имя до компиляции.
Есть способ узнать имя для компилированного файла?
 
В oninit передается путь к скрипту
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru написал:
В oninit передается путь к скрипту
Код
OnInit(script_path)
 message(tostring(script_path), 1) -- отладка скрипта
end

Спасибо, выдаёт полный реальный путь с именем файла к компилированному скрипту.
Страницы: 1
Читают тему
Наверх