QUIKSharp icon indicating copy to clipboard operation
QUIKSharp copied to clipboard

Ошибка ACCESS_VIOLATION в QuikSharp.lua

Open sel1 opened this issue 4 years ago • 17 comments

После обновления до QUIK 8.10.1.1 ошибка в QuikSharp.lua: Critical error ACCESS_VIOLATION in script C:\Program Files\QUIK_VTB\lua\QuikSharp.lua В лог ничего не пишется Незадолго до этого было предупреждение о переходе на 19-значные номера заявок и сделок на MOEX https://forum.quik.ru/forum10/topic4909 , возможно с этим как-то связано

2020-11-23 18_36_57

sel1 avatar Nov 23 '20 13:11 sel1

19-значные заявки с нами уже давно (относительно). Это точно не при чем. Попробуйте перенести файлы Lua из папки с квиком куда-нибудь отдельно, с гарантированным отсутствием проблем с правами доступа

Pr0phet1c avatar Nov 23 '20 17:11 Pr0phet1c

Перенес LUA на другой диск, доступ точно есть, ничего не поменялось. При запуске QUIK от имени администратора и последующем запуске скрипта QUIK валится с ошибкой image

Какие еще могут быть варианты?

sel1 avatar Nov 24 '20 08:11 sel1

Обратиться в тех.поддержку ВТБ, с вопросом "Почему падает терминал?" Уж эта проблема точно не связана с работой библиотеки

Pr0phet1c avatar Nov 24 '20 08:11 Pr0phet1c

Тут https://github.com/finsight/QUIKSharp/blob/158e05d20a939a1c25e28d1eb8afb4454bcfb46b/src/QuikSharp/lua/QuikSharp.lua#L19

8.10 парсится как 8.1 и не те бинарники используются 🤦‍♂️

buybackoff avatar Dec 01 '20 13:12 buybackoff

@buybackoff , как думаете, если полученный результат умножать на 100 и сравнивать со значениями 800 и 850, сработает?

Pr0phet1c avatar Dec 01 '20 16:12 Pr0phet1c

Да, major * 100 + minor. Только нужно получить две части major/minor отдельно как числа.

On Tue, Dec 1, 2020 at 5:26 PM Prophetic [email protected] wrote:

@buybackoff https://github.com/buybackoff , как думаете, если полученный результат умножать на 100 и сравнивать со значениями 800 и 850, сработает?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/finsight/QUIKSharp/issues/281#issuecomment-736662186, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADXS7EMOMMVYON5NIRMUNLSSUKLJANCNFSM4T7QC5PA .

buybackoff avatar Dec 01 '20 16:12 buybackoff

Да, major * 100 + minor. Только нужно получить две части major/minor отдельно как числа.

С этим сложнее... С ходу, решение в голову не приходит.

Pr0phet1c avatar Dec 01 '20 16:12 Pr0phet1c

Не помню из головы, что возвращает string.split. Мы его много где используем

local major, minor = ... string split by dot ... если tuple local version = major * 100 + minor

или

local split = ... string split by dot ... если table local version = split[1] * 100 + split[2] -- в Луа индексация с 1

On Tue, Dec 1, 2020 at 5:38 PM Prophetic [email protected] wrote:

Да, major * 100 + minor. Только нужно получить две части major/minor отдельно как числа.

С этим сложнее... С ходу, решение в голову не приходит.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/finsight/QUIKSharp/issues/281#issuecomment-736669515, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADXS7C6VBDKEIDDMX4QNSTSSULXRANCNFSM4T7QC5PA .

buybackoff avatar Dec 01 '20 16:12 buybackoff

Вижу уже есть коммит, но он неправильный. Строка получается "8.10", или 8 целых и 10 сотых, что дает число 8.1 или 810, если умножить на 100.

buybackoff avatar Dec 01 '20 17:12 buybackoff

Да, я уже переделал. Возможно, не очень изящно, но работает.

Pr0phet1c avatar Dec 01 '20 17:12 Pr0phet1c

Супер! Спасибо!

On Tue, Dec 1, 2020 at 6:48 PM Prophetic [email protected] wrote:

Да, я уже переделал. Возможно, не очень изящно, но работает.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/finsight/QUIKSharp/issues/281#issuecomment-736714392, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADXS7CJ2TNC4GGYS5AD3T3SSUT7ZANCNFSM4T7QC5PA .

buybackoff avatar Dec 01 '20 17:12 buybackoff

У кого такая ошибка падает попробуйте после строк

if quikVersion == nil then message("QUIK# cannot detect QUIK version", 3) return else libPath = "\\clibs" end

в QuikSharp.lua засетать quikVersion = 8.5

JaktensTid avatar Apr 26 '21 21:04 JaktensTid

в версии 8.13 такая же беда. Как вариант можно вообще отключить проверку версии, закомментировав строки: -- if quikVersion >= 8.5 then -- libPath = libPath .. "64\\53_"..linkage.."\\" -- elseif quikVersion >= 8 then -- libPath = libPath .. "64\\5.1_"..linkage.."\\" -- else -- libPath = "\\clibs\\5.1_"..linkage.."\\" -- end А оставить только один путь: libPath = libPath .. "64\\53_"..linkage.."\\"

vsemnado avatar Apr 28 '21 17:04 vsemnado

Обновитесь. Код в этом файле уже давно другой.

Pr0phet1c avatar Apr 29 '21 11:04 Pr0phet1c

Обновитесь. Код в этом файле уже давно другой.

Странно, я последнюю версию библиотеки себе поставил

JaktensTid avatar Apr 30 '21 09:04 JaktensTid

Обновитесь. Код в этом файле уже давно другой.

Странно, я последнюю версию библиотеки себе поставил

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

Сейчас (в актуальной версии) этот кусок выглядит так:

if quikVersion >= 805 then
    libPath = libPath .. "64\\53_"..linkage.."\\"
elseif quikVersion >= 800 then
    libPath = libPath .. "64\\5.1_"..linkage.."\\"
else
	libPath = "\\clibs\\5.1_"..linkage.."\\"
end

Pr0phet1c avatar Apr 30 '21 10:04 Pr0phet1c

Обновитесь. Код в этом файле уже давно другой.

Если папка "LUA" создана актуальным Nuget-пакетом, то там все еще старый код, который сбоит при версиях >= 8.10 Если же брать ту же папку из скомпилированных примеров - то уже исправлено.

Camill13 avatar Jul 02 '21 14:07 Camill13