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

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

Страницы: Пред. 1 ... 15 16 17 18 19 20 21 22 23 24 25 След.
Темная тема
 
Подтверждаю.

На светлой теме Квик работает с меньшей нагрузкой на графический адаптер. Загрузка центрального процессора примерно одинаковая.
Ресурсы жрут два процесса: csrss.exe (Процесс исполнения клиент-сервер) и dwm.exe (Диспетчер окон рабочего стола).

Нагрузка именно на GPU.

Стоит свернуть окно, сразу падает нагрузка. Тоже самое и при отключении соединения с сервером - нагрузка падает.

Я даже сначала подумал, что это вирус майнер (очень похоже поведение), но выключив Квик, нагрузка по этим процессам упала до 0.
Передача массива в функцию - теряется последовательность ключей
 
Цитата
Иван написал:
Мне хотелось бы в функцию передавать именно массив в таком виде (хэш-таблице).
Но как тогда сохранить порядок ключей что передается?
Вы можете создать метамод для такой таблицы, чтобы при вставке происходила сортировка по представлению ключа и сохранялась в внутренний отсортированный массив.
Плюс надо создать итератор класса по внутренней таблице, выводящий значения. Но это сложная структура и удвоение памяти.

Для хранения проще всего создать отдельный массив ключей в нужном порядке. А уже перебирая его, получать значения в постоянном порядке.  
quik 8.5 + lua 5.3 = ошибка
 
Попробуйте что-то типа такого
Код
-- Получение цены в правильном представленнии для выставления транзакции
---@param price number
---@param SCALE number|nil
local function format_to_scale(price, SCALE)
    if type(price) ~= 'number' then  error(("bad argument price (number expected, got %s)"):format(type(price)),2) end

    local status,res = pcall(function()

        SCALE = SCALE or 0
        price = tostring(price):gsub(',', '.')
        -- Ищет в числе позицию точки
        local dot_pos   = price:find('%.')

        if SCALE > 0 then
            -- Если передано целое число
            if dot_pos == nil then
                -- Добавляет к числу '.' и необходимое количество нулей и возвращает результат
                price = price..'.'..string_rep('0', SCALE)
            else -- передано вещественное число
                local remain = price:sub(dot_pos+1, -1)
                local scale  = remain:len()
                if scale ~= SCALE then
                    price = price:sub(1, dot_pos)..remain:sub(1, math_min(scale, SCALE))
                    price = price..(SCALE > scale and string_rep('0', SCALE - scale) or '')
                end
            end
        elseif dot_pos ~= nil and SCALE == 0 then
            price = price:sub(1, dot_pos-1)
        end
        return price
    end)
    if not status then
        log.error('Error format_to_scale: '..tostring(res))
        return price
    end
    return res
end
quik 8.5 ошибка
 
Добрый день.

Т.к. теперь lua 5.3, то многих может расстроить работа функции table.(s)insert.

В lua 5.3 появилась провкерка границ при вставке элементов. Поэтому у многих сломается ранее работающий код, кода вставка была за границей последнего элемента. Для примера, вставка в таблицу по номеру транзакции и т.п.

В lua 5.3 функция:

79 static int tinsert (lua_State *L) {
80   lua_Integer e = aux_getn(L, 1, TAB_RW) + 1;  /* first empty element */
81   lua_Integer pos;  /* where to insert new element */
82   switch (lua_gettop(L)) {
83     case 2: {  /* called with only 2 arguments */
84       pos = e;  /* insert new element at the end */
85       break;
86     }
87     case 3: {
88       lua_Integer i;
89       pos = luaL_checkinteger(L, 2);  /* 2nd argument is the position */
90       luaL_argcheck(L, 1 <= pos && pos <= e, 2, "position out of bounds");
91       for (i = e; i > pos; i--) {  /* move up elements */
92         lua_geti(L, 1, i - 1);
93         lua_seti(L, 1, i);  /* t[i] = t[i - 1] */
94       }
95       break;
96     }
97     default: {
98       return luaL_error(L, "wrong number of arguments to 'insert'");
99     }
100   }
101   lua_seti(L, 1, pos);  /* t[pos] = v */
102   return 0;
103 }

В lua 5.1:

90 static int tinsert (lua_State *L) {
91   int e = aux_getn(L, 1) + 1;  /* first empty element */
92   int pos;  /* where to insert new element */
93   switch (lua_gettop(L)) {
94     case 2: {  /* called with only 2 arguments */
95       pos = e;  /* insert new element at the end */
96       break;
97     }
98     case 3: {
99       int i;
100       pos = luaL_checkint(L, 2);  /* 2nd argument is the position */
101       if (pos > e) e = pos;  /* `grow' array if necessary */
102       for (i = e; i > pos; i--) {  /* move up elements */
103         lua_rawgeti(L, 1, i-1);
104         lua_rawseti(L, 1, i);  /* t[i] = t[i-1] */
105       }
106       break;
107     }
108     default: {
109       return luaL_error(L, "wrong number of arguments to " LUA_QL("insert"));
110     }
111   }
112   luaL_setn(L, 1, e);  /* new size */
113   lua_rawseti(L, 1, pos);  /* t[pos] = v */
114   return 0;
115 }

Видно, что в lua 5.1 есть строка:
101       if (pos > e) e = pos;  /* `grow' array if necessary */

Рассмотрите возможность реализации схожего поведения table.insert. Или хотя бы вашей table.sinsert. Сейчас же такая вставка дает ошибку "position out of bounds":
90       luaL_argcheck(L, 1 <= pos && pos <= e, 2, "position out of bounds");
QUIK 8.0
 
Я уже точно не помню. Но, кажется, сначала запускам Квик, чтобы был активный процесс info.exe. А потом запускаем fordump с указанным ключами.

C:\ForDump\procdump.exe -e -ma -accepteula -w info.exe .\
QUIK 8.0
 
Цитата
Александр Волфовиц написал:
Nikolay, файлы *,dmp могут расшифровать только в ARQA? Самостоятельно понять причину невозможно?
Думаю что да. Я их отправлял на адрес тех. поддержки.
QUIK 8.0
 
Цитата
Александр Волфовиц написал:
Nikolay,эта утилита - ForDump - публичная? Или нужно персонально обращаться в компанию?

И ещё: причину "падения" вы так и не нашли? А как работал ваш драйвер на 32bit?
Наверно публичная, раз она есть на ftp: ftp://ftp.quik.ru/public/ForDump.7z

Запустить файл procdump.exe с ключом -e -ma -accepteula -w info.exe .\

Сделать это можно через командную строку, введя команды

cd <путь к каталогу ForDump>
(например: cd C:\ForDump)

procdump.exe -e -ma -accepteula -w info.exe .\

Вы также можете создать ярлык файла procdump.exe и в его свойства в поле "Объект" в конце строки через пробел добавить -e -ma -accepteula -w info.exe .\

Пример:
Объект: C:\ForDump\procdump.exe -e -ma -accepteula -w info.exe .\

Выполнить команду, либо запустить ярлык с заданными ключами надо в соответствии с ранее изложенной инструкцией - во время воспроизведения проблемного поведения терминала.

В 32 бита, конечно, все работало. Я когда собирал для 64 бита типы переменных менял на соответствующие из ODBC 64 бита. Они другие должны быть. Правда в 64 бита отвалилась часть функциональности из библиотеки. В частности fetch. cur:fetch({}, "a") - в x86 работает, а в x64 - нет. Пришлось переписать на обход курсора через итератор.

Так что здесь что-то действительно из области взаимодействия. Т.к. при отладке через VS тоже Квик не падал. Когда появлялось окно ошибки, я запускал отладку VS, пропускал ошибки - Квик продолжает работать и даже выводит данные из базы.

Я решил отложить пока отладку всеx библиотек. Пусть сначала выйдет что-то стабильное.
QUIK 8.0
 
Цитата
Александр Волфовиц написал:
Пытаюсь постепенно переходить на 64bit QUIK ))  Имеется сложный фреймворк, связка lua с .dll , памяти занимает много, но выделение памяти контролируется.

Ранее .dll под 32bit компилировал в VS2013, работало всё на последней 32bit версии QUIK на слабом ноуте с 4ГБ памяти с процессором Intel (так же всё работало и на выделенном сервере)

Под 64bit компилируется на VS2017, версия QUIK 8.3.2.4 , работает на достаточно мощном ноуте, 12ГБ памяти, но с процессором AMD.

32bit вариант мог работать неделями, не закрывая квик, и работало зараз по 5-6 роботов, проблем не было совершенно.

64bit запустил одного робота, работает около часа, потом QUIK внезапно слетает, даже приблизительную причину аварийной остановки определить невозможно, т.к. не остаётся ни дампов , ни каких-то записей в моём логгере, т.е. причина останова, по всей видимости, очень серьёзная.

Вопрос1: была у кого-нибудь такая ситуация?

Вопрос2: может это быть как-то связано с особенностями процессоров AMD?

Я еще для 8.0 версии собирал ODBC драйвер. Падал почти сразу. Но... После общения с тех. поддержкой ARQA я попробовал записать дамп падения.
Мне прислали утилиту, дающую возможность снять дамп при работе Квика - ForDump.

Так вот дальше стало все интерснее, при запуске этой утилиты Квик не падал. Без нее падает. Т.е. дамп не сделать - не падает ведь. А без утилиты дампа нет.
Т.е. на лицо некая особенность обмена через стек при запущенной утилите.

Похоже без оптимизации библиотек под Квик x64 не обойтись.
Удаление элемента из массива, который прошёл проверку
 
Эту задачу можно решить разными способами.

1. Усложняете таблицу элементов. Вместо элементов - вложенные таблицы, с полями  sec_code и checked. После проверки ставите checked = true. Далее по условию проверяете, что элемент уже не трубует проверки.
   Недостаток - более сложная струтуруа, постоянно занятая памаять полной таблицей.
2. Вводите новую таблицу, уже проверенных элементов, и по условию вхождения в эту таблицу проверяете, что элемент уже не трубует проверки.
   Недостаток - рост занятой памяти, т.к. надо вводить новую сущность.
3. Как уже написали выше - ввести временную таблицу с нужными элементами, а в конце перейти на эту таблицу.
4. Перебор через while, удаление через table.sremove. Именно, через потокбезопасную функцию, хоть у Вас в коде и нет второго потока, использующего эту таблицу.
Почему через for делать нельзя ни в коем случае. Потому что цикл for вычисляет свои значения один раз перед стартом цикла. Поэтому он будет помнить число элементов в таблице, что было изначально - это его инвариантное состояние.
Поэтому while. И аккуратно сдвигать счетчик текущего элемента. Этот вариант самый нежелательный, хоть и рабочий.
Передача данных из скрипта в индикатор
 
Она же будет не обязательна к использованию. Кто мешает просто использовать драйвер и работать напрямую как сейчас.
Я хотел бы видеть что-то типа - ODBC RecordSet и просто с ним работать.
Передача данных из скрипта в индикатор
 
Квик это не позволяет.

Вопрос решается внешней библиотекой staticvar.dll, написанной Swerg https://quik2dde.ru/viewtopic.php?id=61
Либо аналогичной, которую можно найти на том же ресурсе.

Второй вариант - это испольовать in_memory database. Для примера SQLite. Для нее есть прямой драйвер или luasql. Но в свете перехода на x64, этот вариант может быть не таким простым в реализации, т.к. надо пересобирать драйвера.

В этом плане очень бы хотелось встроенной в Квик сущности, доступной из Lua, для подключения к внешним базам данных.
Decoda for LUA 64bit
 
Очень советую не полагаться на отладчик, а немного пересмотреть подход к написанию скриптов.
В частности, покрывайте тестами свой код, проверяйте входящие переменные по типу и значению. Критически важные участки, оборачивайт в pcall, чтобы обработать исключение.
Вы же пишете скрипт на клиенте, а значит Вы должны работать в ситуации когда в любой момент времение у Вас обрывается связь с непредсказуемым временем восстановления.
Также Вам никто не гарантирует время ответа от сервера на ваши запросы и команды. А значит Вам все равно надо проерять все, что Вы ожидаете.

А дебаг, Вы же, скорее всего, будете делать лог файл. Так отладочную информацию можно и нужно выодить в лог по уровню дебаг.
Тогда, включая режим отладки, увидите сообщения отладки, а в простом режиме будет просто информационная часть лога. Тем более, что если Вы передаете скрипт заказчику, то о возможных ошибках Вы только из лога и узнаете.
Отправка транзакции в сегменте фондового рынка (акции) - брокеры Финам / Сбербанк, какой формат и где брать код клиента?
 
Обычно для фондовой секции требуется добавить символ "/", как разделитель. Плюс, часто брокеры требуют наличие "/" в поле код клеинта.Получается два "/".

Формат такой: client_code/my_comment

При этом число символов ограничено, поэтому после // особо не разгуляешься.
ООП в LUA и профит от него, ООП в LUA и профит от него
 
Ну и для примера. У меня в одной из библиотек реализован класс "Ордер". У него есть методы и свойства общие для ордеров.
У него два наследника - "Лимитные ордера", "Стоп ордера". У них уже есть свои, характерные именно для них, методы и свойства.
Это позволяет работать с ордером как с объектом, а не просто как строка в таблице Квика. А методы позволяют реализовать интерфейс к ордеру, в понятных и общих терминах.
ООП в LUA и профит от него, ООП в LUA и профит от него
 
В Lua, все же, прототипная модель ООП (https://ru.wikipedia.org/wiki/Прототипное_программирование). Если быть точным, в Lua все построено на таблицах. Поэтому думать о расходе памяти и оптимизировать код надо всегда (слабые таблицы).
Поэтому Классы в Lua решают больше задачу создания некой сущности на основе шаблона. Что бывает удобно. Но все то же можно сделать и без оного, придется просто сделать больше переменных.
Недельные опционы на демо счете
 
Добрый день.

Не могу найти в демо версии недельные опционы. Поток данных на демо контуре по ним вообще есть? Или это я не могу найти.
QUIK 8.0
 
Цитата
Anton написал:
Впрочем, можете квик не насиловать, она даже под консольным луа падает  на тестовом скрипте из поставки, откуда очевидно, что дело не в квике. Доходит вот докуда     Скрытый текст      
 
Дальше мне рыть лень, это уже работа какая-то получается )  
Да, увидел. Уже подумалось, что проще консольную программку написать, чем библиотеки насиловать. У меня почта так отпраляется и читается. Надежней.
QUIK 8.0
 
Цитата
Anton написал:
Цитата
Nikolay написал:
Я не смотрел в код. Надо посмотреть значит, да.
Заодно и в мейкфайл посмотрите, там кое-что генерируется из луа с помощью luac, получается *.lo, а потом с помощью bin2c из него получается *.loh. Так вот в мастере luacom5.lo уже лежит готовый. Очевидно, мейкфайл его пропустит (оставит как есть), а как есть он, сдается мне, 32-битный.
Это как раза было поправлено. Иначе ошибки линковки.
QUIK 8.0
 
Цитата
Anton написал:
Цитата
Nikolay написал:
плюс что-то с кодировкой символов.
Таки дело не в бобине, взгляните в сорцы, файл tUtil.cpp, строки 111, 128, 171, 175. Возможно, список неполный.
Компилировал VS через nmake. Я не смотрел в код. Надо посмотреть значит, да. Правда то же, скомпилированное под Квик 7, работает, а у него utf тоже нет.
QUIK 8.0
 
Цитата
Sergey Gorokhov написал:
Цитата
Nikolay написал:
Представители ARQA, что с моим обращением   https://forum.quik.ru/forum10/topic4656/  
Вы прислали запрошенную информацию?
Конечно. Я общался через почту с Andrey Bezrukov
QUIK 8.0
 
Меня попросили собрать luaCom для Квик 8. Собрал. Но тесты показывают, что Квик 8.0-8.4 падает, плюс что-то с кодировкой символов.
Очень похоже на то, что было с luasql(ODBC).

Представители ARQA, что с моим обращением https://forum.quik.ru/forum10/topic4656/
Также и с этой библиотекой - Квик 8.4 падает, а на 7-ой версии работает.

При этом собранные мной luasocket прекрасно работают в 8-ой версии.

Если кто хочет потестировать
https://github.com/nick-nh/qlua/tree/master/luasql
https://github.com/nick-nh/qlua/tree/master/luaCOM
ввод параметров с клавиатуры для робота lua, способы ввода параметров с клавиатуры для робота lua не заходя в сам код
 
Можно, конечно.

Создается таблица и перехватывается нажатие клавиш внутри таблицы по их коду.
Для стирания можно перехватывать BackSpace. Для плавного увеличения-уменьшения значения можно перехватить клавиши стрелки и т.д.
Узнать дату последней сделки
 
Подниму старую тему.

Допустим обращаемся к данным в 10:00.

Есть параметр TIME - время последней сделки. А дата?
TRADE_DATE_CODE - это дата прошлого торгового дня или дата дня где были сделки или дата текущего нового торгового дня, раз он уже наступил?

Да, можно взять время последнего любого бара, но проблема как раз в том, что бары при заказе не сразу поступают с сервера, надо подождать. Вот сравнивая дату-время сделки и дату-время бара хочется понять, что все бары загружены. Но если даты сделки нет, то гарантии, что это сделка прошлой сессии нет, может это сделка позапрошлой и т.д.  
Функция CreateDataSource, Возможно ли получать данные с её помощью по любому инструменту не открывая его график?
 
Подниму тему, дабы не создавать новую.

Эксперимент с функцией CreateDataSource выявил интересную особенность. Если отправить туда интервал, отличный от заданного в константах, то нет ошибки.

Вот я отправил число 615 вместо интервала.

Get DataSource: SBER|QJSIM, интервал: 615
InitSec DS all bars: 2, last bar: 2019.12.03 10:15:00

Также возвращается и для 619. Это фича или все же баг. Я вполне ожидаю, что мне вернется ошибка, чтобы как-то отреагировать.
HHTP запросы в LUA и проблема с 32-битной версией библиотеки LuaSocket
 
У меня есть сборка для 32 бита.
Там есть пример отправки запроса с использованием cURL. Но можно и руками отправлять, только с Socket
https://github.com/nick-nh/qlua/tree/master/lua_socket_ssl
QUIK 8.0
 
Цитата
Анатолий написал:
Цитата
Nikolay написал:
Если кому еще необходимо. Я бился над сборкой socket и ssl под x64. Вроде собрал
Незаработали они у меня потому что собрал ты их строго под Луа 5.1, может будешь так добр что соберешь все это еще и под Луа 5.3?
А зачем под Lua 5.3? В Квике 5.1. Все это только ради Квика и собиралось. В этом весь смысл.
Если под 5.3 и для сторонних скриптов, то, кажется, сборки есть готовые под 5.3.
QUIK 8.0
 
Если кому еще необходимо.
Я бился над сборкой socket и ssl под x64. Вроде собрал, но как-то нестабильно оно работало. В итоге нашел готовые сборки, более стабильно работающие.
А вот lCurl пока не удалось собрать под x64.

Вот сборки и примеры:
https://github.com/nick-nh/qlua/tree/master/lua_socket_ssl
QUIK 8 и компиляция luasql
 
Все проверялось на свежеустановленной демо версии 8.0.3.14. Или нужна именно локальная копия для исключения влияния среды исполнения?
QUIK 8 и компиляция luasql
 
Возвращаюсь к вопросу.
Тех. поддержка ответила (Падение Quik 8.0.3.14 (CQ02527163)), что ошибка в файле alltrade.dat.
Но это явно не оно. Т.к. удаление файла не приводит к другому поведению. Квик 8 стабильно падает без дампов.
Сделал простой тестовый скрипт, стабильно работающий в 7-ой версии с 32 битной библиотекой, но приводящий к падению Квика 8 с 64 битной.
Причем падает непостоянно в одном месте, то при выборке из базы данных, то, что более странно, при вызове getQuoteLevel2.

https://yadi.sk/d/abcYTS_w9TQoQQ
ОШИБКА: (533) Неверно указан код клиента.
 
Да, для основной секции, большинство брокеров, при подаче заявки проверяет наличие /. Поэтому проще принять за данность и просто добавлять его.
Не завершается main после остановки скрипта
 
Если под некорретным поведением подразумевается ошибка, которая здесь не указана, то предположу, что есть проблема вывода в таблицу, т.к. при остановке скрипта окно таблицы закрывается, а OnStop еще не вызван. В main нет ни одной проверки, что таблица существует и она не закрыта, вот и падает при попытке вывести в закрытую таблицу.
Также sleep лучше повысить до 50 мс (т.к. используется вывод в таблицу), иначе Квик начнет процессор нагружать.
Функция подключения к другому серверу, Есть ли?
 
Для этой же задачи был переписан скрипт автологина, использующий w32 библиотеку, который при обрыве связи, нажимает на список выбора сервера в форме логина/пароля.
QUIK 8 и компиляция luasql
 
Попробовал еще раз. Файлы dmp не формируются. В папке есть два файла от прошлых запусков. Отправлю их.
Ошибка такого рода:

Имя события проблемы: APPCRASH

 Имя приложения: info.exe

 Версия приложения: 8.0.3.14

 Отметка времени приложения: 5d282989

 Имя модуля с ошибкой: StackHash_f988

 Версия модуля с ошибкой: 6.3.9600.19304

 Отметка времени модуля с ошибкой: 5c7f684f

 Код исключения: c0000374

 Смещение исключения: PCH_9D_FROM_ntdll+0x0000000000090D0A

 Версия ОС: 6.3.9600.2.0.0.16.33

 Код языка: 1049

 Дополнительные сведения 1: f988

 Дополнительные сведения 2: f9888e0a087b444ad5df05a65c8fed35

 Дополнительные сведения 3: 9540

 Дополнительные сведения 4: 954017ff240795f447e29bd8d973bef5

Но далее все интереснее. При возникновении ошибки, я попробовал запустить отладку приложения.
Получил сообщение об ошибке в ntdll.dll
Закрыл сообщение и запустил продолжить выполнение приложения. Вернулся в окно Квика и он продолжил работать как будто ничего не произошло. Скрипт работает.

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

LuaVM closed with error

Снимки экрана приложу в письме.

QUIK 8 и компиляция luasql
 
Куда отправлять?
QUIK 8 и компиляция luasql
 
Вопрос разработчикам: как можно посмотреть лог термнала, чтобы понять от чего происходит падение программы при использовании библиотеки?
QUIK 8 и компиляция luasql
 
Вернулся к вопросу. Скомпилировал драйвер ODBC, т.к. он мне больше всего нужен.
Что пришлось менять:
В файле ls_odbc.c пришлось заменить определение окружения на _WIN64.
Пришлось заменить тип SQLINTEGER на SQLLEN, т.к. в библиотеке ODBC 64 другие типы.

Также надо удалить все файлы *.obj, т.к. они собраны для x86.

После библиотека собралась.
Даже запустился скрипт, работающий под x86.

Но, пришлось переписать код обхода курсора на итератор. Прямой обход приводит к ошибке.
Но даже это не долго живет, Квик падает без слов через секунд 10-20 работы.

SQL Profiler показывает, что запросы идут нормально, ошибок нет. В те несколько секунд, что успевает отработать скрипт, данные стакана выводятся в окно исправно.
Но падает Квик всегда.

Что может быть, драйвер или все же Квик? Этот же драйвер под 7 Квик работает исправно.

Возможно, как писали в одной из веток, надо еще и lua5.1.dll самому собирать. Есть подозрение, что некорректно обрабатываются таблицы в луа стеке.

Если кто захочет попробовать:
https://github.com/nick-nh/qlua/tree/master/luasql
QUIK 8 и компиляция luasql
 
Добрый день.
Я пробовал скомпилировать через make файл, но лезут ошибки линковки целевой платформы. Хотя делалось все под окружением x64.
Остается вариант сконвертировать проект VS6 под VS2015-2017 и собирать, меняя зависимости. Он есть в исходниках.
Но напрямую он не конвертируется, слишком старая версия. Видел собщение, что надо делать через VS2010, т.к. более поздние версии не конвертируют проект.
Отправка уведомления в Telegram через прокси
 
Я собирал на vs17

Вот я дополнительно собрал lcurl https://github.com/Lua-cURL/Lua-cURLv3 с последним cURL

Проверил, работает. Вот сборка и примеры
https://github.com/nick-nh/qlua/tree/master/lua_socket_ssl
Кто как решил вопрос уведомления о сделках?
 
Как я выше написал, я решил проблему просто - сам скомпилировал библиотеки. И все заработало. Никаких переименований библиотек я не делал.
Отправка уведомления в Telegram через прокси
 
Добрый день.
Я бился с подключением SSL библиотеки. Не подключалась никак из готовых библиотек. На стороне тоже все работало.
В конечном итоге пришлось просто пересобрать конкретную версию библиотеки, которая в итоге заработала.
Так что советую собрать luacurl через luarocks именно под lua 5.1.

Еще один момент важный, такого рода библиотеки в Квике работают, если они лежат в папке с библиотекой lua5.1, т.е. в папке установки Квика.
В чем здесь особенность Квика не знаю, но пришлось так сделать, иначе никак не запускалось.
Кто как решил вопрос уведомления о сделках?
 
Проблему решил.
Пришлось скомпилировать самому luaSec 0.8-1 под lua 5.1, используя Open SSL.
Файлы libeay32 и ssleay32 обязаны быть рядом с файлом lua 5.1, т.е. в папке установки Quik.

У меня отправка почты совершается за секунду, две. Не более. Никаких задержек.

Теперь можно приступать к использованию библиотеки для интересных вещей, типа чтения Twitter и т.д.

Если кому интересно, готовая сборка с примером отправки почты с моего Гита:
https://github.com/nick-nh/qlua/tree/master/lua_socket_ssl
Кто как решил вопрос уведомления о сделках?
 
Цитата
Анатолий написал:
Цитата
Nikolay написал:
socket  = require("socket")
А у меня такой строчки нету и все работает, короче у меня все прописано вот так:
Ну я хочу использовать эту библиотеку не для отправки почты. Для почты я написал на C# програмульку на 10 строк, вызываю ее из Квика и все.
А вот для других целей хочется запустить. Ясно, что дело в путях, т.к. в другом месте работает. Будем копать...
Кто как решил вопрос уведомления о сделках?
 
Цитата
Анатолий написал:
Сложно так сказать не видя что у тебя в скрипте и в папках квика, покажи тогда свой кусок скрипта где обьявляются пути

package.cpath  = ...
package.path  = ...

и идет подключение библиотек командой require
Так а что здесь такого при подключении... Я же говорю, что этот же скрипт ZeroBraneStudio в работает.
Отличие в том, что у него свои пути к библиотекам. А здесь такие.
Попытка поставить пути из ZeroBraneStudio для Квика приводит к аналогичной ошибке.

gSPath = 'D:\\Projects\\qlua_work'
gPath  = 'C:\\QUIK-Junior'
package.cpath = gPath.."\\?.dll;"..gSPath .."\\lua_socket_ssl\\?.dll;" ..gSPath .."\\lua_socket_ssl\\clibs\\?.dll;" ..gSPath .."\\lua_socket_ssl\\clibs\\mime\\?.dll;" ..gSPath .."\\lua_socket_ssl\\clibs\\socket\\?.dll;" .. package.cpath
package.path  = gSPath .."\\lua_socket_ssl\\?.lua;"..gSPath .."\\lua_socket_ssl\\socket\\?.lua;"..gSPath .."\\lua_socket_ssl\\ssl\\?.lua;" ..package.path

print(package.cpath)
print(package.path)

socket  = require("socket")
smtp    = require("socket.smtp")
ssl     = require("ssl") --- вот здесь и падает в Квике
Кто как решил вопрос уведомления о сделках?
 
Цитата
Анатолий написал:
Цитата
Nikolay написал:
Я тоже подозреваю, что с интерпретатором lua в Квике не все ладно. У меня также из ZeroBraneStudio все работает.
С интерпретатором луа в квике все ладно, просто там есть нюансы, у меня были все эти проблемы и я их решил, помоему ты всетаки не все скопировал из окна ошибок, полностью все оттуда скопируй и вставь сюда, или лучше сделай скрин и выложи
Я скопировал все, кроме полного пути до файла ssl.dll. Больше ошибок нет. Выше по сообщениям этой темы были аналогичные сообщения.Если бы интерпретатор луа был чист, то типовая библиотека strict не приводила бы к падению терминала.
Кто как решил вопрос уведомления о сделках?
 
Цитата
Анатолий написал:
В момент выполнения строки registry = ctx:   ctx= SSL context: 0D72EE88    тип - userdata   s = SSL connection: 0D848F00  тип - userdatasock = tcp{client}:0D846E88    setfd=nilВообщем мне кажется что это связано с квиковским интерпретатором луа, т.к. операция registry это сохранение любых значений C кода в специальной общей таблице для всех выполняемых С кодов, вот тут в чем о и проблема, т.к. в других интерпретаторах, том же Zerobrane, такой проблемы нет
Я тоже подозреваю, что с интерпретатором lua в Квике не все ладно. У меня также из ZeroBraneStudio все работает.
Также не все библиотеки можно подключить в Квике, для примера strict -  Квик падает без слов.
Также обнаружил, что внутри фунции SearchItems (в функции проверки) у меня почему-то проверка nil как false не срабатывает. Приходится явно писать ~= nil
Кто как решил вопрос уведомления о сделках?
 
Цитата
Анатолий написал:
Цитата
Nikolay написал:
Я подключил все библиотеки, socket подключается нормально. Но при подключении ssl, не находит ssl.core. ssl.lua, собственно, и пытается его включить local core    = require("ssl.core")Т.е. нужна папка \ssl а в ней файл core.dll
Скопируй из квика из окна "Ошибки выполнения скрипта" то что там пишется при твоей попытке выполнить скрипт и выложи это сюда"
Ну так и пишется, что не может загрузить модуль. Все пути прописаны, библиотека рабочая, взята из поставки ZeroBraneStudio. Из нее все прекрасно работает. При этом просто socket загружается нормально.

Код
error loading module 'ssl.core' from file 'ssl.dll':
   Не найден указанный модуль.
Кто как решил вопрос уведомления о сделках?
 
А тоже самое из ZeroBraneStudio работает. ssl.core - ошибку не дает, письма отправляются. А Квик ошибку выдает на local core    = require("ssl.core") в  ssl.lua
Кто как решил вопрос уведомления о сделках?
 
Добрый день.

Я подключил все библиотеки, socket подключается нормально. Но при подключении ssl, не находит ssl.core. ssl.lua, собственно, и пытается его включить local core    = require("ssl.core")
Т.е. нужна папка \ssl а в ней файл core.dll

Попробовал взять сборку Телеграм бота, что здесь выкладывали, аналогичная проблема. Похоже какая-то библиотека все же отсутствует.
Кто-то встречал похожую ошибку? Я нашел упоминания, то это связано с libeay32 и ssleay32, но они есть, путь к ним прописан. Плюс пробовал класть их в разные папки.
64-битная версия QUIK
 
Добрый день.

А UTF-8 завезут в этот релиз или все по-старому?
strict lua
 
Цитата
Egor Zaytsev написал:
Добрый день.
Согласно сторонним источникам должно работать:
https://www.yamaha.com/products/en/network/techdocs/others/lua/strict_lua/
Ну вопрос был задан потому, что при вызове strict = require('strict') Квик валится намертво. Тихо и быстро.
Страницы: Пред. 1 ... 15 16 17 18 19 20 21 22 23 24 25 След.
Наверх