76 (2019-11-19 10:39:57 отредактировано toxa)

Re: Обмен данными между Lua-скриптами в QUIK

swerg пишет:

Одного опасаюсь: при таком синтаксисе (прям как таблицы) пользователи решат, что это прям натурально Lua-таблицы и начнут использовать/требовать общение и синтаксис обращения к ним как полностью аутентичным Lua-таблицам (применяя всякие table.sort(), table.insert, итерирование в for и т.п.). А т.к. пока (для скорости обмена между скриптами скриптами) предполагается это реализовывать вручную, не копируя в реальные промежуточные Lua-таблицы (при обращении по индексам), то как бы не замаяться всё это поддерживать smile

это не кажется таким уж сложным, если в качестве хранилища использовать не свои структуры, а lua же. понадобится три вещи: функция deepcopy(source_lua_state, dest_lua_state) которая копирует объект со стека одного стейта в стек другого и метаметоды __index и __newindex для таблицы, которую возвращает либа. deepcopy() должна быть защищена критической секцией, а внутри рекурсивно обходить все вложенные объекты. и, кстати, по скорости будет так же.

можно реализовать две стратегии: все скрипты разделяют один объект, либо в каждом скрипте есть своя копия, и мы делаем копирование во все экземпляры. все зависит от того, что пользователь делает чаще: чтение или запись и насколько записываемые объекты развесисты. второй вариант не получится.

ps: кстати, если остановить все скрипты, использующие staticvar, то хранилище обнулится. наверное, это не очень хорошо. можно грузить либу-владелицу хранилища в квик при первой записи в хранилище, а выгружать - на wm_close основного окна quik.

77 (2019-11-21 14:44:00 отредактировано toxa)

Re: Обмен данными между Lua-скриптами в QUIK

.

78 (2019-11-21 14:44:27 отредактировано toxa)

Re: Обмен данными между Lua-скриптами в QUIK

создал отдельную тему: https://quik2dde.ru/viewtopic.php?pid=2519#p2519