Получение параметров из таблиц в переменные

Страницы: 1
RSS
Получение параметров из таблиц в переменные
 
День добрый! Подскажите знающие люди, правильно ли я пытаюсь получить параметры таблиц  в переменные. Заранее спасибо.
local tblAsk =          getParamEx(CLASS_CODE,  SEC_CODE, "OFFER")
local tblBid =          getParamEx(CLASS_CODE,  SEC_CODE, "BID")
local tblStatus =       getParamEx(CLASS_CODE,  SEC_CODE, "STATUS")  
local tblMinLot =       getParamEx(CLASS_CODE,  SEC_CODE, "LOTSIZE")
local tblBalance =      getMoneyEx(FIRM_ID, CLIENT_CODE, TAG, CURR_CODE,LIMIT_KIND)
local tblTotalLot =     getDepoEx(FIRM_ID, CLIENT_CODE, SEC_CODE, ACCOUNT ,LIMIT_KIND)
local tblMinStepPrice = getParamEx(CLASS_CODE,  SEC_CODE, "SEC_PRICE_STEP")
                     
if tblAsk==nil          then Ask=0          else Ask=tonumber(tblAsk.param_value)                   end  
if tblBid==nil          then Bid=0          else Bid=tonumber(tblBid.param_value)                   end  
if tblStatus==nil       then Status=0       else Status=tonumber(tblStatus.param_value)             end  
if tblMinLot==nil       then MinLot=0       else MinLot=tonumber(tblMinLot.param_value)             end    
if tblBalance==nil      then Balance=0      else Balance=tonumber(tblBalance.currentbal)            end  
if tblTotalLot==nil     then TotalLots=0    else TotalLots=tonumber(tblTotalLot.currentbal)         end    
if tblMinStepPrice==nil then MinStepPrice=0 else MinStepPrice=tonumber(tblMinStepPrice.param_value) end  
 
Вместо проверок на nil достаточно написать
local tblAsk =          getParamEx(CLASS_CODE,  SEC_CODE, "OFFER") or 0

Но, по хорошему, надо проверить есть ли данный параметр в потоке данных. Иначе будет не ясно - это ошибка получения данных с сервера или они просто не заказаны.
Проверить можо так:
getParamEx(CLASS_CODE, SEC_CODE, info_string).result == '1'
 
Спасибо. А по getMoneyEx(FIRM_ID, CLIENT_CODE, TAG, CURR_CODE,LIMIT_KIND)  и  getDepoEx(FIRM_ID, CLIENT_CODE, SEC_CODE, ACCOUNT ,LIMIT_KIND) тоже надо проверять находятся ли они в потоке или как?
 
Нет, в отличии от getParamEx, эти функции возращают таблицы. Данные в них будут, т.к. это данные по счету, данные по позициям и т.д.
надо только проверять, что получен вообще результат и он корректен.
http://luaq.ru/getDepoEx.html
 
Спасибо
 
вместо:
if tblAsk==nil          then Ask=0          else Ask=tonumber(tblAsk.param_value)                   end  
--------------
пишите проще:
if tblAsk   then  Ask=tonumber(tblAsk.param_value)    end  
----------------------------------
где используете Ask
тоже пишите
if Ask then ....  end
-----------------
В итоге вы не будете тратить время на расчеты если Ask=nil ,
а в Вашем случает Вы тратите время на расчеты, если Ask=0,
либо ставите такое же условие для нуля
 
Страницы: 1
Читают тему (гостей: 1)
Наверх