Как очистить данные в setCell, Как очистить данные в setCell по условию и как правильно прочитать данные из getClassSecurities("SPBFUT"),используя getParamEx.На ум приходить только {"RIM0","SiM0"}
Пользователь
Сообщений: Регистрация: 18.02.2016
11.06.2020 17:20:47
Вопрос больше пока по первой части..Я создаю таблицу,получаю данные с помощью getParamEx.Пытаюсь сделать условие,что если условие верно,то в таблице отображается инструмент,если нет,то заполнить поля nil.Но когда условие срабатывает я не получаю пустую таблицу..А таблица просто замораживается,пока вновь условие не станет верным.Не знаю как правильно удалить инструмент и очистить таблицу.
local rows, columns = GetTableSize (t_id) InsertRow(t_id, rows) -- добавить новую строку вниз таблицы для "Итого"
SetWindowCaption(t_id, "Опционы")
-- исполнять цикл, пока пользователь не остановит скрипт или не закроет окно таблицы while IsRun do if IsWindowClosed(t_id)==true then IsRun=false end
local currentPrice=0 local lastPrice=0 local bid = 0 local ask = 0 local profitPerc = 0 local currentSecCode= "" local fullNameOfInstrument = "" local rowInPortfolioTable = {} -- строка из таблицы "Лимиты по бумагам" local tableInstrument = {} -- данные "Таблицы текущих торгов" local iRowInOutTable = 1 local razn = 0 local raznPercent = 0
if raznPercent > 5 then -- окрашиваем ColourRowInGreen(iRowInOutTable)
elseif raznPercent<-5 then ColourRowInRed(iRowInOutTable)
else ColourRowInYellow(iRowInOutTable) end iRowInOutTable = iRowInOutTable+1
sleep(500) -- пауза сек. end --end --message("script table portfolio finished") end
function ColourRowInRed(num_row) SetColor(t_id, num_row, QTABLE_NO_INDEX, RGB(255,150,150), RGB(0,0,0), RGB(255,150,150), RGB(0,0,0)) end function ColourRowInYellow(num_row) SetColor(t_id, num_row, QTABLE_NO_INDEX, RGB(255,255,200), RGB(0,0,0), RGB(255,255,200), RGB(0,0,0)) end function ColourRowInGreen(num_row) SetColor(t_id, num_row, QTABLE_NO_INDEX, RGB(150,255,150), RGB(0,0,0), RGB(150,255,150), RGB(0,0,0)) end
-- Округляет число до указанной точности function math_round (num, idp) local mult = 10^(idp or 0) return math.floor(num * mult + 0.5) / mult end -- удаление точки и нулей после нее function RemoveZero(str) while (string.sub(str,-1) == "0" and str ~= "0") do str = string.sub(str,1,-2) end if (string.sub(str,-1) == ".") then str = string.sub(str,1,-2) end return str end function OnStop() DestroyTable(t_id) IsRun = false end
Пользователь
Сообщений: Регистрация: 23.01.2015
16.06.2020 13:24:42
Здравствуйте, Для очистки значения в ячейке, нужно передать ему пустое значение соответствующее типу данных. Для строковых типов, пустым является "", для числовых 0. Пример: SetCell(t_id, row, 1, "") SetCell(t_id, row, 2, tostring(""),0)
Пользователь
Сообщений: Регистрация: 18.02.2016
16.06.2020 13:38:01
Здравствуйте..Спасибо..Я вроде пытался так сделать,но не получалось..А если я использую массив,могу я удалить,который не проходит по условию,чтобы значения очистились??Например я хочу использовать getClassSecurities,чтобы все инструменты класса проверялись по условию,и ненужные отбраковывались??Как такое можно сделать??И можно ли вообще??Совсем,не против,если посоветуете что почитать или ознакомиться по этой теме))
Вопрос не понятен. Вы хотите удалить строку в GUI таблице? (тут речь про таблицу которую Вы видите глазами в терминале) Или удалить значение из массива? (тут речь НЕ про визуальную таблицу, а про Lua таблицы table) Или удалить значение из середины строки? (getClassSecurities ведь возвращает строку)
Пользователь
Сообщений: Регистрация: 18.02.2016
16.06.2020 13:54:13
Спасибо..Всё получилось..Странно,что раньше так не получалось..Точно пробовал с пустыми кавычками..
Пользователь
Сообщений: Регистрация: 18.02.2016
16.06.2020 14:01:28
В идеале,я хочу чтобы полученная строка getClassSecurities подставяла значения класса в таблицу setCell,а которые не проходят по условию,в неё не попадают.Наверное нужно использовать for для этих целей,чтобы каждый инструмент перебирался..Сначала наверное нужно разделить строку getClassSecurities??.Не совсем глубоки познания в языке..
Если вопрос в том как строку разбить по частям и перебрать эти части по очереди, то используйте следующий цикл:
Код
for sec_code in string.gmatch(sec_list, "([^,]+)") do --перебираем инструменты по очереди.
end
Пользователь
Сообщений: Регистрация: 18.02.2016
16.06.2020 14:13:17
Спасибо большое,помогли..
Пользователь
Сообщений: Регистрация: 18.02.2016
18.06.2020 17:14:16
Здравствуйте!!А такой момент..После использования данного цикла перебора строки,у меня в созданной таблице так и остаётся одна строка,просто инструменты в ней перебираются..А как добавить всю строку с инструментами в таблицу??Чтобы созданная таблица расширялась вниз в зависимости от количества инструментов?
Так он добавляет новые столбцы в таблицу.А надо чтобы он перезаписывал данные.Чем можно воспользоваться??Например делаешь условие и таблица постоянно растёт.
Пользователь
Сообщений: Регистрация: 23.01.2015
13.07.2020 15:10:49
psih, Вы ошибаетесь, функция НЕ добавляет новые столбцы. Она добавляет новые строки. Судя по Вашему изначальному вопросу ровно это Вам и надо, разве нет?
Пользователь
Сообщений: Регистрация: 18.02.2016
13.07.2020 15:36:36
Цитата
Sergey Gorokhov написал: , Вы ошибаетесь, функция НЕ добавляет новые столбцы. Она добавляет новые строки. Судя по Вашему изначальному вопросу ровно это Вам и надо, разве нет?
не совсем))У меня изначально была таблица,из которой я не мог убрать значения,очистить её..Но спасибо за помощь)