SOKOLHIK (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
quik 64 вызов функции lua из dll c++
 
Цитата
quik 64 вызов функции lua из dll c++
 
По созданию нативного потока я не стал связываться с сложным "_beginthreadex" а поступил проще
Код
void pr(lua_State * A)
{thread athr1(newpotok, A); athr1.detach();}
   

static int forLua_runMAIN1(lua_State * A)
{thread athr(pr, A);athr.join(); return(0);}
поясню почему; сначала вызывается поток join() для того чтобы упорядочить порядок вызовов если мы запускаем несколько потоков в каждом из которых выполняется конкретная функция  join() выступает как электронное табло в сбербанке к примеру а если мы выполним сразу detach() то возникнет хаос и это приводит к ошибкам ну а так все работает ровно и аккуратно
quik 64 вызов функции lua из dll c++
 
Вот и снова наступил свободный денек,решил добить данную тему, даю вам ссылку кто еще не понял в каком направлении двигаться https://qarchive.ru/198607_ekvivalent_lua_coroutine_create_v_s___s_ispol_zova­niem_lua_newthread да и спасибо Anton помог немного))
quik 64 вызов функции lua из dll c++
 
кажется дошло до меня (1 Создает новый поток, толкает его в стек и возвращает указатель на lua_State, который представляет этот новый поток.) уже повод призадуматься буду углубляться в знания значит Спасибо)
quik 64 вызов функции lua из dll c++
 
Цитата
Алексей написал:
в с++ я не силен познакомился в первые ну хорошо попробуем так
Код
  static int forLua_runMAIN1(lua_State *  L)
{  
    lua_State *  L1  =  lua_newthread(L);
    lua_getglobal(L1,  "main1" );
    lua_pcall(L1,  0 ,  0 ,  0 );   
     return  ( 0 ); 
}
  
 получилось? это в 32 бит версии могло такое прокатить  
и это я отбросил все условия предположил что main у меня в бесконечном цикле к примеру а в main1 функции скрипта стоит одна строка message("не получается")  и все равно вы ее не запустите с t1
quik 64 вызов функции lua из dll c++
 
в с++ я не силен познакомился в первые ну хорошо попробуем так
Код
static int forLua_runMAIN1(lua_State* L)
{  
    lua_State* L1 = lua_newthread(L);
    lua_getglobal(L1, "main1");
    lua_pcall(L1, 0, 0, 0);   
    return (0); 
}

получилось? это в 32 бит версии могло такое прокатить

quik 64 вызов функции lua из dll c++
 
В c++ я не силен поэтому ищу помощь.пытаюсь выполнить функцию из нового потока "lua_State* L1 = lua_newthread(L);" если раньше  код "32 dit версии quik"
работал почти безупречно
Код
   
    lua_State* L1 = lua_newthread(L);
    lua_gc(L1, LUA_GCSTEP, 100); // выполняет постепенный этап сбора мусора
    lua_pushstring(L1, "main1");//Находит в стеке Lua функцию по ее названию и помещает ее наверх стека
    lua_gettable(L1, LUA_GLOBALSINDEX);
    lua_pcall(L1, 0, 0, 0);
то 64bit версии я уже так сделать не могу
Код
void newpotok(lua_State* L)
{
   while (lua_isfunction(L, 1) != 1)
   {
     lua_getglobal(L, "main1"); Sleep(100); // ТУТ ЦИКЛ ТК НЕ ВСЕГДА НАХОДИТ НУЖНУЮ ФУНКЦИЮ ПРАВДА В ЭТОМ СОСТОЯНИИ ФУНКЦИЯ РАБОТАЕТ
   }


   lua_State* L1 = lua_newthread(L);
   lua_settop(L1, 0);// уст кол-во элементов в стеке. 0 - очистить стек.

   while (lua_isfunction(L1, 1) != 1)
        {
           lua_xmove(L, L1, 1);); ТУТ МЕНЯЛ ЗНАЧЕНИЯ МЕСТАМИ НИ ЧЕГО ПЕРЕДАЧА ФУНКЦИИ ДРУГОМУ ПОТОКУ
      lua_getglobal(L1, "main1"); Sleep(100); // 
   }

    lua_pcall(L1, 0, 0, 0);  //////////// НЕ ПОЛУЧАЕТСЯ ВЫПОЛНИТЬ ////////////////////////////////////////////////////////////////////////
   

};

static int forLua_runMAIN1(lua_State* L)
{
   std::thread thr(newpotok, L); //Запускает выполнение функции MyCallback() в отдельном потоке
   thr.detach(); //Отсоединяет созданный поток от основного, делая его "фоновым"
   return (0); //Завершает работу функции forLua_StartCallback, при этом функция MyCallback продолжает работать в отдельном потоке
}
Таблица "Состояние счета"
 
Доброго вечера.у меня вопросик небольшой, можно ли напрямую  из функции? получать значения из таблицы "Состояние счета" в периодах (0-1-2),все пересмотрел найти не могу(((
Не могу войти в Quik, Получил ключ от сбербанк скачал Quik но не могу войти пишет неверное имя иле пароль
 
в настройках в разделе шифрование проставил путь к ключам
Вывод данных в Access
 
Добрый день нужен совет,пытался вывести в Access данные используя библиотеку "luacom" вот начало кода,ну а дальше база данных не слушается и на запросы типа DoCmd.RunSQL отвечает ошибкой
Код
local luacom = require("luacom")
 
Access = luacom.GetObject("C:\\Users\\алексей\\Documents\\Database1.accdb", "Access.Application") -- открываем необходимую базу данных акцесс
Access.Visible = true
message(Access.Name)
sleep(4000)
Access.DoCmd.DeleteObject("qwert")--работает
Получение значений из функции getClassSecurities по индексу переменной
 
Подскажите мне балбесу,как из функции getClassSecurities взять к примеру первое значение ,проблема в том что переменная содержит запятые
и поэтому выражение message(sec_list[1],1) выводит nil
Вывод данных в EXCEL через "ODBC" драйвер
 
При открытии EXCEL.ошибка"другой пользователь",тогда странно получается почему при выводе по dde.таких ошибок не возникает,может дело в драйвере самом
Вывод данных в EXCEL через "ODBC" драйвер
 
Уважаемые знатоки,есть такая проблема,КВИК при выводе по "ODBC" держит EXCEL,и при открытии  возникает ошибка"другой пользователь",те КВИК открывает где то у себя файл и не дает мне его открыть,Если соединение прекратить и отключиться то файл excel открывается уже с переданными данными
Страницы: 1
Наверх