Всем здравия! Не могу понять, почему значение nil. Функция function PutDataToTable(posNow) передает значение nil. Decoda тоже не особо помогла
Код
Class = "SPBFUT"
Emit = "SiU0"
MyAccount = "SPBFUTJReBr"
Код
function main()
while is_run==true do
body() --основные вычисления
end
end
Код
function body()
if (Timer > 0) then
Timer = Timer-1
PutDataToTableTimer()
sleep(1000)
return
end
local ServerTime = getInfoParam("SERVERTIME")
if(ServerTime==nil or ServerTime=="") then
Problem = "Error!"
Timer = 3
return
else
Problem = ""
end
if (IsWindowClosed(TableId)) then
CreateWindow(TableId)
PutDataToTableInit()
end
local SessionStatus = tonumber(getParamEx(Class,Emit,"STATUS").param_value)
if (SessionStatus~=1) then
Problem = "Сессия закрыта"
Timer = 3
return
end
local function f12 (TableId, msg, X, Y)
if (msg==QTABLE_LBUTTONDBLCLK) then
if (X==13 and Y==1) then
message("Робот работает",1)
elseif (X==13 and Y==3) then
message("Робот остановлен",1)
is_run = false
end
end
end
SetTableNotificationCallback (TableId, f12)
SetCell(TableId,1,2,ServerTime)
SetCell(TableId,1,3,Problem)
Problem = ""
local PosNow = PosNowFunc(Emit,MyAccount)
PutDataToTable(posNow)
sleep(1000)
end
function PutDataToTable(posNow)
SetCell(TableId,3,2,tostring(posNow))
end
function PosNowFunc(emit,account)
local nSize = getNumberOf("futures_client_holding")
if (nSize~=nil) then
for i=0,nSize-1 do
local row = getItem ("futures_client_holding",i)
if (row~=nil and row.sec_code==emit and row.traccid==account) then
return tonumber(row.totalnet)
end
end
end
return
end
function PutDataToTableInit()
Clear(TableId)
SetWindowPos(TableId,100,200,500,300)
SetWindowCaption(TableId,"Робот")
---------------------------------------------
for i=1, 13 do
InsertRow(TableId,-1)
end
SetCell (TableId, 1, 1, "Время сервера =>")
SetCell (TableId, 2, 1, "Код бумаги =>")
SetCell (TableId, 3, 1, "Текущая позиция =>")
SetCell (TableId, 4, 1, "Сигнал ТС =>")
SetCell (TableId, 5, 1, "ЛОТ =>")
SetCell (TableId, 7, 1, "Номер счета =>"); SetCell (TableId, 7, 3, "ФОРТС")
SetCell (TableId, 8, 1, "Код класса =>")
SetCell (TableId, 13, 1, "Запуск робота")
SetColor(TableId, 13, 1, RGB(255,255,0), RGB(0,0,0), RGB(0,220,220), RGB(0,0,0))
SetCell (TableId, 13, 3, "СТОП")
SetColor(TableId, 13, 3, RGB(255,255,0), RGB(0,0,0), RGB(0,220,220), RGB(0,0,0))
local nRow,nCol = GetTableSize(TableId)
for i=1,nRow do
if (i%2==0) then
SetColor(TableId, i, QTABLE_NO_INDEX, RGB(220,220,220), RGB(0,0,0), RGB(0,220,220), RGB(0,0,0))
else
SetColor(TableId, i, QTABLE_NO_INDEX, RGB(255,255,255), RGB(0,0,0), RGB(0,220,220), RGB(0,0,0))
end
end
end
function PutDataToTableTimer()
SetCell (TableId, 1, 1, "Время сервера =>")
Highlight(TableId, 1, QTABLE_NO_INDEX, RGB(0,20,255), RGB(255,255,255),500)
end
function WriteToEndOfFile(sFile,sDataString)
local serverTime = getInfoParam("SERVERTIME")
local serverData = getInfoParam("TRADEDATE")
sDataString = serverData..";"..serverTime..";"..sDataString.."\n"
local f = io.open(sFile,"r+")
if (f == nil) then
f = io.open(sFile,"w")
end
if (f~=nil) then
f:seek("end",0)
f:write(sDataString)
f:flush()
f:close()
end
end
Всем здравия! Не могу понять, почему не работает функция. С переменными путаницы нет, локальная объявлена. Что не так?
Код
SetTableNotificationCallback (Tab1, f12)
local f12 = function(Tab1, msg, X, Y)
if (msg==QTABLE_LBUTTONDOWN ) then
if (X==13 and Y==1) then
message("Робот работает",1)
elseif (X==13 and Y==3) then
message("Робот остановлен",1)
is_run = false
end
end
end
function body()
local ServerTime = getInfoParam("ServerTime")
if(ServerTime==nil or ServerTime=="") then
Problem = "Error!"
end
SetCell(TableID,1,2,ServerTime)
SetCell(TableID,1,3,Problem)
sleep(1000)
end
function PutDataToTableInit()
Clear(TableId)
SetWindowPos(TableID,100,200,500,300)
SetWindowCaption(TableID,"Робот")
---------------------------------------------
InsertRow(TableID,-1)
Я понял, что работал с разными переменными. Изменил, а воз и ныне там
function body()
local ServerTime = getInfoParam("ServerTime")
if(ServerTime==nil or ServerTime=="") then
Problem = "Error!"
end
SetCell(TableID,1,2,ServerTime)
SetCell(TableID,1,3,Problem)
sleep(1000)
end
function PutDataToTableInit()
Clear(TableID)
SetWindowPos(TableID,100,200,500,300)
SetWindowCaption(TableID,"Робот")
---------------------------------------------
InsertRow(TableID,-1)
end
Всем здравия! Задачка простенькая, но я не понимаю, в чем здесь проблема. На выходе Пустая таблица без заглавия окна и серверного времени. Спасибо!
Всем здравия! Есть проблема, решение, как я понимаю, простое, но я туплю. Пишу в NP++ с кодировкой UTF-8. При запуске в терминале, все отображается в другой кодировке. Подскажите как исправить. Спасибо!