Блок Settings

Страницы: 1
RSS
Блок Settings
 
Здравствуйте.
Имею в коде индикатора следующее:
"
local cl = {"TQBR","TQTF","RTSIDX","INDX"}
local class = getDataSourceInfo().class_code
if class == cl[1] or class == cl[2] or class == cl[3] or class == cl[4] or class == cl[5]
       or class == cl[6] or class == cl[7] or class == cl[8] or class == cl[9] or class == cl[10]
       then S = S1
end
"
Можно ли каким-то образом таблицу "cl" создавать в блоке Settings,
чтобы в окне настроек индикатора через запятую забивать указанные классы?
 
Фактически вопрос
можно ли строку, разделенную запятыми, преобразовать в таблицу lua
Верно?
это отличный запрос для гугла
 
Settings.cl="TQBR,TQTF,RTSIDX,INDX"
 
Николай, вы зачем обманываете?
 
Цитата
Николай Камынин написал:
Settings.cl="TQBR,TQTF,RTSIDX,INDX"
Это я уже пробовал. Неверный способ
 
Цитата
swerg написал:
можно ли строку, разделенную запятыми, преобразовать в таблицу lua
вопрос не совсем понятен. Можно сделать все что угодно, вопрос в какую таблицу вам надо преобразовать?
 
Цитата
Русский написал:
Николай  Камынин написал:
Settings.cl="TQBR,TQTF,RTSIDX,INDX"Это я уже пробовал. Неверный способ
Как раз таки это единственно верный способ.
Цитата
swerg написал:
можно ли строку, разделенную запятыми, преобразовать в таблицу lua

Например если разделитель точно запятые, то можно так:
Код
function pack(...)
   return arg
end
function str2tbl(str)
   return assert(loadstring("return pack("..str..")"))()
end

tbl = str2tbl("123,456,789")
 
Цитата
Sergey Gorokhov написал:
Например если разделитель точно запятые, то можно так:
Код
   function   pack ( .. .)
    return  arg
 end 
 function   str2tbl (str)
    return  assert(loadstring( "return pack("  .. str .. ")"))()
 end 

tbl  =  str2tbl( "123,456,789" )
  
Разделитель запятые - это не принципиально. Можно любой. Главное, чтобы можно было забить нужные классы через окно настройки индикатора.

Ваш способ либо не работает, либо я делаю что-то неправильно. Так как условие if не выполняется.
Код
tbl  =  str2tbl( "123,456,789" )
В своём коде tbl я заменяю на cl и вместо 123,456,789 забиваю классы.
 
Цитата
Русский написал:
Ваш способ либо не работает, либо я делаю что-то неправильно. Так как условие if не выполняется.
Это был пример не более (предоставляется как есть) и этот пример изначально предназначался для числовых данных.
Если данные строковые, то передавать в кавычках надо
tbl = str2tbl("'TQBR','TQTF','RTSIDX','INDX'")

Есть и другие способы, см интернет:
https://quik2dde.ru/viewtopic.php?id=105
 
Цитата
Sergey Gorokhov написал:
Если данные строковые, то передавать в кавычках надо

или переписать пример, тогда будет работать как со строками так и с числами:
Код
function pack(...)
   return arg
end
function str2tbl(str)
   return assert(loadstring("return pack('"..string.gsub(str, ",", "','").."')"))()
end
function str2tbl2(str)
   return string.gmatch(str, "([^,]+)")
end
tbl = str2tbl("TQBR,TQTF,RTSIDX,INDX")
 
split
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
Sergey Gorokhov написал:
Цитата
Sergey Gorokhov   написал:
Если данные строковые, то передавать в кавычках надо
или переписать пример, тогда будет работать как со строками так и с числами:
Код
   function   pack ( .. .)
    return  arg
 end 
 function   str2tbl (str)
    return  assert(loadstring( "return pack('"  ..  string.gsub (str,  "," ,  "','" ) .. "')"))()
 end 
 function   str2tbl2 (str)
    return   string.gmatch (str,  "([^,]+)" )
 end 
tbl  =  str2tbl( "TQBR,TQTF,RTSIDX,INDX" )
  
Сергей, благодарю. Всё работает. Ещё подскажите, это сильно утяжеляет расчёт кода программой?
 
Цитата
Русский написал:
Сергей, благодарю. Всё работает. Ещё подскажите, это сильно утяжеляет расчёт кода программой?

По идее не должно.
 
Цитата
Sergey Gorokhov написал:
Цитата
Русский   написал:
Сергей, благодарю. Всё работает. Ещё подскажите, это сильно утяжеляет расчёт кода программой?
По идее не должно.
assert утяжеляет сильно. В цикле его использовать нежелательно.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru написал:
Цитата
Sergey Gorokhov   написал:
Цитата
Русский   написал:
Сергей, благодарю. Всё работает. Ещё подскажите, это сильно утяжеляет расчёт кода программой?
По идее не должно.
assert утяжеляет сильно. В цикле его использовать нежелательно.
Понял, благодарю.
 
Цитата
s_mike@rambler.ru написал:
split
Этот способ тоже подошёл, благодарю.
Страницы: 1
Читают тему
Наверх