Добрый вечер. Не могу решить вроде бы совсем не сложную задачу - получить одну переменную из Lua в C#. Не таблицу а просто 1 число из стакана. Есть такой скрипт на Lua
Есть DLL на плюсах которая берет последнее значение из стека Lua
Далее, уже из MMF шарп получает правильное значение цены офера но только один раз. После чего продолжает его печатать когда оно давно изменилось.
Скорее всего ошибка кроется в С++ библиотеке, но я в упор не могу её разглядеть. Такое ощущение что я беру элемент в стеке под одним и тем же индексом, но lua_gettop(L) по идеи должен вернуть индекс последнего.
Цитата |
---|
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); } |
Цитата |
---|
SR_Memory.BaseStream.Seek(0, SeekOrigin.Begin); Msg = SR_Memory.ReadToEnd().Trim('\0', '\r', '\n'); |
Скорее всего ошибка кроется в С++ библиотеке, но я в упор не могу её разглядеть. Такое ощущение что я беру элемент в стеке под одним и тем же индексом, но lua_gettop(L) по идеи должен вернуть индекс последнего.