[Вопрос разработичкам Квика: попытка №3] CreateDataSource и SetUpdateCallback - не срабатывает после первого запуска скрипта

Страницы: 1
RSS
[Вопрос разработичкам Квика: попытка №3] CreateDataSource и SetUpdateCallback - не срабатывает после первого запуска скрипта
 
Прошу пожалуйста подтвердить, что это ошибка или что это корректное поведение Квика:

Заказываю данные через CreateDataSource:SetUpdateCallback():

Запускаю Квик:
-Загружаю скрипт.
-Запускаю скрипт.
-Скрипт вызывает CreateDataSource.
-CreateDataSource возвращает нулевую таблицу, что говорит о том, что данные придут позже в колбек.
-Колбек   больше НИКОГДА не вызывается ... проверка размера таблицы в цикле -  так  же не дает результата, а точнее размер таблицы всегда нулевой -  хоть  крути цикл минуту, хоть 10 минут.

Выгружаю Скрипт и СРАЗУ же его запускаю - данные сразу же начинают приходить.

Вот простейший скрипт подтверждающий это поведение:

Версия Квика 9.7.1.10
Код
function my_callback_CreateDataSource(my_table_data_, code_class_, code_paper_)

message(code_paper_)       //В первый запуск скрипта - НИКОГДА не вызывается.

end



-----------------------------------------------------------------------------------------------------------int main:-----------------------------------------------------------------------------------------------------


function main()


local code_class1 = "TQBR"           
local code_paper1 = "GAZP"           
local interval1   = INTERVAL_TICK  


local code_class2 = "TQBR"           
local code_paper2 = "SBER"           
local interval2   = INTERVAL_TICK  



----------------------------------------------------------------------Вызов  CreateDataSource_1------------------------------------------------------------------------------

local my_table1, error_desc1 = CreateDataSource(code_class1, code_paper1, interval1)      --Вызываем собственно CreateDataSource

------------------------Проверка на ошибки:-------------------
if error_desc1 ~= nil then 
message("Error")
end
--------------------------------------------------------------

message(tostring(my_table1.Size()))                  //В первый запуск скрипта - размер табилцы ВСЕГДА нулевой - сколько бы времени не ожидал.
if my_table1.Size() == 0 then
message("data requested from the server")
end

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



----------------------------------------------------------------------Вызов  CreateDataSource_2------------------------------------------------------------------------------
local my_table2, error_desc2 = CreateDataSource(code_class2, code_paper2, interval2)  --Вызываем собсвенно CreateDataSource

------------------------Проверка на ошибки:-------------------
if error_desc2 ~= nil then 
message("Error")
end
--------------------------------------------------------------

message(tostring(my_table2.Size()))                 //В первый запуск скрипта - размер табилцы ВСЕГДА нулевой - сколько бы времени не ожидал.
if my_table2.Size() == 0 then
message("data requested from the server")
end

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



my_table1:SetUpdateCallback(function(idx)my_callback_CreateDataSource(my_table_data1, code_class1, code_paper1) end)
my_table2:SetUpdateCallback(function(idx)my_callback_CreateDataSource(my_table_data2, code_class2, code_paper2) end)
 
if my_table1.Size() == 0 then
message("data requested from the server")
end
if на while поменяй и sleep(100) поставь
 
Цитата
Mike Orbita написал:
if my_table1.Size() == 0 then
message("data requested from the server")
end
if на while поменяй и sleep(100) поставь
У тебя со зрением проблемы ?
 
Тебя вежливости отец не учил что ли!? Говнокод начертил какой-то и еще спорит.
 
Цитата
Mike Orbita написал:
Тебя вежливости отец не учил что ли!? Говнокод начертил какой-то и еще спорит.
У тебя какие то проблемы с отцом ? Разбирайся с ним сам.
Говнокод у тебя в ж%пе. Видимо твой папаша твою рожу им вытирал.

Ты так и не ответила на вопрос:  у тебя проблемы со зрением ?
 
Думаю что с таким настроем тебе вряд ли кто-то захочет помогать, мальчик.
 
Цитата
Mike Orbita написал:
Думаю что с таким настроем тебе вряд ли кто-то захочет помогать, мальчик.
Видимо девочка ты решила, что тебя кто то просил помогать ? Или ты таким образом ищешь помощи от своего папаши говно-натирателя ?

Разберись сначала со своим зрением ;)
 
Слушай, ОКОЛОрыночник, я Мамбу шатаю более 15 лет и своими руками написал не один десяток высокочастотных алгоритмов, и тут какая-то бездарная личность из ПТУ, которая не может даже обычный парсер котировок из Квика закодить будет мне пальцем тыкать - иди сначала БЭЙСИК подучи, невежда.
 
Цитата
Mike Orbita написал:
Слушай, ОКОЛОрыночник, я Мамбу шатаю более 15 лет и своими руками написал не один десяток высокочастотных алгоритмов, и тут какая-то бездарная личность из ПТУ, которая не может даже обычный парсер котировок из Квика закодить будет мне пальцем тыкать - иди сначала БЭЙСИК подучи, невежда.
Тебе в детстве кто-то говорил, что ты прохрамист и ты в это поверил ?
Шатай и дальше свою маму, папашу видимо шатать силенок не хватает. Иди и дальше тыкай пальцем - это все на что ты способен.
 
Бестолочь ты не образованная. Мамба - это Московская биржа, если ты кодишь для Квика такие вещи знать нужно.
 
Прощу прощения, что прерываю вашу беседу, но мне кажется, что в коде надо вместо точки использовать двоеточие, тогда заработает. Правильно вот так:
Код
my_table1:Size()
Т.е. DataSource создаётся, но размер запрашивается неправильно.
 
я отвечал на вопрос темы,
повторю свой ответ.
скрипт написан в целом рабочий
----------------------
подтверждаю что при первом запуске подписка не происходит
при втором происходит.
----------------------
Подписка при первом запуске вроде бы произойдет если ручками установить флаги инструментов в заказе данных через меню.
--------------
Иначе никакие танцы с бубном проблему не решают.
===============
считаю, что такое поведение функции подписки мягко сказать - странное.
 
уточняю - речь про функцию CreateDataSource
 
вот мой тест:
Код
local code_class1 = "TQBR"
local code_paper1 = "GAZP"
local interval1   = INTERVAL_TICK
local code_class2 = "TQBR"
local code_paper2 = "SBER"
local interval2   = INTERVAL_TICK
------------------------
local function my_cb_CDS(my_table_data_, code_class_, code_paper_, interval_, cntr)
message(code_paper_,1)
Sleep(100);
end
-----------------------------------------------------------------------------------------------------------int main:-----------------------------------------------------------------------------------------------------
function main()
   while not stopped do
      if my_table1==nil then my_table1, err = CreateDataSource(code_class1, code_paper1, interval1);
         if my_table1 then
            my_table1:SetUpdateCallback(function(idx)my_cb_CDS(my_table_data1, code_class1, code_paper1, interval1) end)
         end
      end
      if  my_table2==nil then my_table2, err = CreateDataSource(code_class2, code_paper2, interval2);
         if  my_table2 then
            my_table2:SetUpdateCallback(function(idx)my_cb_CDS(my_table_data2, code_class2, code_paper2, interval2) end)
         end
      end
-------------------------
   message(tostring(my_table1:Size()),1)
   sleep(1000)
   end
-------------------------
end -- end main()
function OnInit(script_path)
end


 
Цитата
Mike Orbita написал:
Бестолочь ты не образованная. Мамба - это Московская биржа, если ты кодишь для Квика такие вещи знать нужно.
Лапуль, если у тебя месячные, возьми у своей Мамы прокладки и используй по назначению, больше ты не на что не способна. Ну и пусть тебе твой папаша еще говнецом мордочку твою умоет.
 
поправил, чтобы тест бесконечно не работал при втором запуске
Код
local code_class1 = "TQBR"
local code_paper1 = "GAZP"
local interval1   = INTERVAL_TICK
local code_class2 = "TQBR"
local code_paper2 = "SBER"
local interval2   = INTERVAL_TICK
------------------------
local function my_cb_CDS(my_table_data_, code_class_, code_paper_, interval_, cntr)
message(code_paper_,1)
Sleep(100);
end
-----------------------------------------------------------------------------------------------------------int main:-----------------------------------------------------------------------------------------------------
local n=20;
function main()
   while n>0 do
      if my_table1==nil then my_table1, err = CreateDataSource(code_class1, code_paper1, interval1);
         if my_table1 then
            my_table1:SetUpdateCallback(function(idx)my_cb_CDS(my_table_data1, code_class1, code_paper1, interval1) end)
         end
      end
      if  my_table2==nil then my_table2, err = CreateDataSource(code_class2, code_paper2, interval2);
         if  my_table2 then
            my_table2:SetUpdateCallback(function(idx)my_cb_CDS(my_table_data2, code_class2, code_paper2, interval2) end)
         end
      end
-------------------------
--   message(tostring(my_table1:Size()),1)
   sleep(1000)
   n=n-1
   end
-------------------------
end -- end main()
function OnInit(script_path)
end


 
Quikos, добрый день.

По данному вопросу ответили Вам в теме https://forum.quik.ru/forum10/topic7804/.
Страницы: 1
Читают тему
Наверх