Принимаю из стека пустое значение

Страницы: 1
RSS
Принимаю из стека пустое значение, Программирование на Lua C++
 
Добрый вечер. Не могу решить вроде бы совсем не сложную задачу - получить одну переменную из Lua в C#. Не таблицу а просто 1 число из стакана. Есть такой скрипт на Lua
Цитата
require("QluaCSharpConnector");
is_run=true;

function main()
while is_run == true do
QluaCSharpConnector.StartSendData(OnQuote());
--message(offr_price);  

sleep(1000);
end
end;

function OnQuote()
 tb = getQuoteLevel2("TQBR", "SBER");
 offr_price = tostring(tb.offer[1].price);
return offr_price;
end

Есть DLL на плюсах которая берет последнее значение из стека Lua
Цитата
PBYTE pb = (PBYTE)(MapViewOfFile(hFileMapMyMemory, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 256));

while (true)
{
if (pb[0] == 0)
{
int index = lua_gettop(L);
double data = lua_tonumber(L, index);
const char *Str;
char buff[100];
sprintf(buff, "%f", data);
memcpy(pb, buff, strlen(buff));
}
Sleep(1000);
}
Далее, уже из MMF шарп получает правильное значение цены офера но только один раз. После чего продолжает его печатать когда оно давно изменилось.
Цитата
SR_Memory.BaseStream.Seek(0, SeekOrigin.Begin);
Msg = SR_Memory.ReadToEnd().Trim('\0', '\r', '\n');

Скорее всего ошибка кроется в С++ библиотеке, но я в упор не могу её разглядеть. Такое ощущение что я беру элемент в стеке под одним и тем же индексом, но lua_gettop(L) по идеи должен вернуть индекс последнего.
 
При попытке записать данные в файл (текстовый документ) из С++ все работает как надо.
 
Илья,
Если проблема в С++ то увы помочь ничем не можем т.к. вопрос вне нашей сферы ответственности.
Только вопросы касающиеся непосредственно QUIK.

По коду QLUA как минимум видно что Вы опять совершаете ту же самую ошибку что мы уже с Вами обсуждали
Еще раз повторяем OnQuote()  срабатывает сам по себе при изменении любых стаканов.
У Вас же при любом изменении стаканов по любым инструментам, вызывается getQuoteLevel2 по сбербанку.
Например, изменился стакан по лукойлу, а Вы дергаете данные по сбербанку.
Это уже само по себе не логично и не правильно.
Решение уже было озвучено и еще раз повторим, надо добавить проверку инструмента в событии.

Либо если с пониманием колбеков проблемы, вообще избавиться от OnQuote. Раз Вам так надо дергать стакан в цикле, так и делайте, никто не запрещает.
Страницы: 1
Читают тему
Наверх