Ошибка работы getScriptPath() из индикатора (версия 8.11.0.66)

Страницы: 1
RSS
Ошибка работы getScriptPath() из индикатора (версия 8.11.0.66), QUIK 8.11.0.66
 
Код тестового индикатора ниже.
Кладем в папку LuaIndicators, вызываем диалог добавления графика (индикатора).
В окне сообщений выводится:
{}

Т.е. наш скрипт вызвался, но getScriptPath() вернула пустое значение. Это явно ошибка.

Добавим этот индикатор.
В окне сообщений выводится:
{}
{D:\Quik-Junior\LuaIndicators}
<D:\Quik-Junior\LuaIndicators>

Т.е. индикатор сначала выполняется, но getScriptPath() вернула пустое значение.
Потом индикатор еще раз выполняется, но тогда уже getScriptPath() вернула правильное значение.

Проблема в том, что первоначальное выполнение, когда только открывали диалог - getScriptPath() вернула пустое значение, а значит индикатор не смог корректно отработать, если в нем используется getScriptPath(), и не добавился в диалог выбора индикатора.

Надо исправить эту ошибку.


Код
Settings = {}
Settings.line = {}

Settings.Name = "*swerg_test"

Settings.line[1] = {}
Settings.line[1].Name = "swerg_test"

message("{".. getScriptPath() .. "}")

function Init()
   message("<".. getScriptPath() .. ">")
   return 1
end

function OnCalculate(idx)
   return 5
end

 
Swerg,

в момент вызова диалога выбора индикатора происходит очень условный запуск индикатора. Там откастрировано все что только можно. Фактически этот запуск мало отличается от проверки синтаксиса и служит для грубой отбраковки неподходящих файлов в папке luaindicators. Не надо ждать от него ничего.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
s_mike@rambler.ru,

в принципе да, вы мне подсказали вашим сообщением вариант как это объехать. Спасибо.
Однако я не понимаю что мешает простую (по функционалу) функцию getScriptPath() сделать корректно работающей в этот момент.
 
Для себя нашел такой способ: надо просто всё делать в Init()
Там уже значения как надо и нужный мне функционал там отрабатывает вполне
 
https://forum.quik.ru/messages/forum10/message6264/topic584/#message6264
Надо делать так, как надо. А как не надо - делать не надо.
 
:lol:  :lol:  :lol:
Я подозревал, что это "не новое", видимо везло не сталкивался

Из той ветки:
Цитата
Старатель написал:
3. Если очень хочется, то вместо getScriptPath() можно использовать
Код
   getWorkingFolder () .. "\\LuaIndicators"  

Уточнение: это не эквивалентно, учитывая, что сканируются все вложенные папки, что позволяет индикаторы (если это удобно) складывать не непосредственно в LuaIndicators, а во вложенные в неё папки (удобно, если индикатор состоит из многих файлов или это некое семейство индикаторов по какой-то теме). Именно поэтому я и начал использовать getScriptPath, а с ним такое вот приключение...
Страницы: 1
Читают тему
Наверх