Александр Волфовиц написал: unsigned переменных нет вообще, код написан очень просто.
Имею в виду что-нибудь типа такого (тоже ведь ничего сложного)
Код
long pos = 0;
FILE * f = fopen(...);
...
fseek(f, pos * sizeof(RECORD), SEEK_SET);
fwrite(...); ++pos;
Вот здесь после переполнения pos начнутся чудеса. Более того, его переполнение это UB, компайлер может еще и от себя чудес добавить. Этот пример должен без ворнингов собраться (разве что только deprecation, на который все плюют обычно и отключают его макросом), а чудо заложено.
Библиотеки luasocket и luasec установленные и собранные при помощи luarocks
Пример получения данных из blackterminal, если положить библиотеки из архива по ссылке выше в папку со скриптом, то все должно работать
Код
package.cpath = getScriptPath () .. "\\systree\\lib\\lua\\5.1\\?.dll;" .. package.cpath
package.path = getScriptPath () .. "\\systree\\share\\lua\\5.1\\?.lua;" .. package.path
--package.cpath = "C:\\Lua\\luarocks\\systree\\lib\\lua\\5.1\\?.dll;" .. package.cpath
--package.path = "C:\\Lua\\luarocks\\systree\\share\\lua\\5.1\\?.lua;" .. package.path
local https = require ( "ssl.https" )
PrintDbgStr ( "Start: [" .. getScriptPath () .. "]" )
is_run = false
function OnInit ()
is_run = true
end
function main ()
local request_body = "{ \" getemlist \" : \" flag \" , \" key \" : \" TEST \" }"
local response_body = {}
local res, code, headers, status = https.request{
url = "https://blackterminal.ru/api/0.0.8" ,
method = "POST" ,
headers =
{
[ "Content-Type" ] = "application/json; charset=utf-8" ;
[ "Content-Length" ] = string.len (request_body);
},
source = ltn12. source.string (request_body),
sink = ltn12. sink.table (response_body),
}
PrintDbgStr ( "res: " .. tostring(res))
PrintDbgStr ( "code: " .. tostring(code))
PrintDbgStr ( "headers: " .. tostring(headers))
PrintDbgStr ( "status: " .. tostring(status))
PrintDbgStr ( "body: " .. tostring( table.concat (response_body)))
end
function OnStop ()
is_run = false
end
function On Close ()
is_run = false
end
С вашими архивами и вашим примером выдает ошибку "error loading module 'ssl.core' from file 'C:\Lua\systree\lib\lua\5.1\ssl.dll': Не найден указанный модуль" Путь правильный... В чем может быть проблема? Ткните носом плиз)))
Вам нужно скопировать файлы libcrypto-1_1-x64.dll и libssl-1_1-x64.dll в папку C:\Windows\System32(ну или где установлена винда) либо в другую папку где у вас определена среда PATH(как посмотреть ее гуглите) Если нет этих файлов то качайте полная версия текущая легкая версия текущая по умолчанию при установки файлы сами с копируются в System32(там будет предложено куда копировать в bin или System32)
Пользователь
Сообщений: Регистрация: 27.01.2017
27.04.2020 10:59:06
Цитата
Александр Волфовиц написал: ,эта утилита - ForDump - публичная? Или нужно персонально обращаться в компанию?
И ещё: причину "падения" вы так и не нашли? А как работал ваш драйвер на 32bit?
Сделать это можно через командную строку, введя команды
cd <путь к каталогу ForDump> (например: cd C:\ForDump)
procdump.exe -e -ma -accepteula -w info.exe .\
Вы также можете создать ярлык файла procdump.exe и в его свойства в поле "Объект" в конце строки через пробел добавить -e -ma -accepteula -w info.exe .\
Выполнить команду, либо запустить ярлык с заданными ключами надо в соответствии с ранее изложенной инструкцией - во время воспроизведения проблемного поведения терминала.
В 32 бита, конечно, все работало. Я когда собирал для 64 бита типы переменных менял на соответствующие из ODBC 64 бита. Они другие должны быть. Правда в 64 бита отвалилась часть функциональности из библиотеки. В частности fetch. cur:fetch({}, "a") - в x86 работает, а в x64 - нет. Пришлось переписать на обход курсора через итератор.
Так что здесь что-то действительно из области взаимодействия. Т.к. при отладке через VS тоже Квик не падал. Когда появлялось окно ошибки, я запускал отладку VS, пропускал ошибки - Квик продолжает работать и даже выводит данные из базы.
Я решил отложить пока отладку всеx библиотек. Пусть сначала выйдет что-то стабильное.
С вашими архивами и вашим примером выдает ошибку "error loading module 'ssl.core' from file 'C:\Lua\systree\lib\lua\5.1\ssl.dll': Не найден указанный модуль" Путь правильный... В чем может быть проблема? Ткните носом плиз)))
Вам нужно скопировать файлы libcrypto-1_1-x64.dll и libssl-1_1-x64.dll в папку C:\Windows\System32(ну или где установлена винда) либо в другую папку где у вас определена среда PATH(как посмотреть ее гуглите) Если нет этих файлов то качайте полная версия текущая легкая версия текущая по умолчанию при установки файлы сами с копируются в System32(там будет предложено куда копировать в bin или System32)
Супер! Спасибо. Все заработало после установки. Теперь Телеграм под 8.5 робит)
Пользователь
Сообщений: Регистрация: 27.05.2015
05.05.2020 09:25:57
Nikolay, файлы *,dmp могут расшифровать только в ARQA? Самостоятельно понять причину невозможно?
Пользователь
Сообщений: Регистрация: 27.01.2017
05.05.2020 10:23:58
Цитата
Александр Волфовиц написал: , файлы *,dmp могут расшифровать только в ARQA? Самостоятельно понять причину невозможно?
Думаю что да. Я их отправлял на адрес тех. поддержки.
Александр Волфовиц написал: ,объясните ещё раз для тупых )) Сначала запускаем fordump , потом QUIK ? Или fordump сама запускает QUIK ?
Добрый день.
Последовательность такая:
-Запустить Quik, и добиться ситуации проявления проблемы -Запустить скрипт -Подождать несколько (3-5) минут (!!!)
Пользователь
Сообщений: Регистрация: 27.05.2015
06.05.2020 15:37:54
Цитата
Anton написал: обычно это повреждение стека тем или иным способом.
Вы правы, функция из C++ возвращала слишком много параметров в LUA-скрипт (оказывается, по умолчанию 20 элементов стека, у меня было больше)
Проблема решилась увеличением количества элементов стека с помощью lua_checkstack
Пользователь
Сообщений: Регистрация: 30.01.2015
06.05.2020 17:19:49
Можно просто вернуть таблицу и не больше не задумываться о подобных проблемах
Пасхалочка для Алексея Иванникова:
Пользователь
Сообщений: Регистрация: 07.06.2020
18.06.2020 19:06:01
Добрый день! Прошу поделиться информацией касаемо компиляции ЛУА скрипта в 64 бит-ной 8-й версии QUIK. При запуске скомпилированного скрипта выходит ошибка "bad header in precompiled chunk". Компиляция скрипта была выполнена с использованием lua-5.3.5_Win64_bin (также в 4- версии), при этом последовательность действий была следующая: 1. Создал текстовый файл: Интерпритатор 64.txt; 2. Прописал в файл команду: luac53.exe -o "Robot.luac" "Robot.lua"; 3. Поменял расширение файла bat, т.е. получил исполняющий файл Интерпритатор 64.bat; 4. Далее скопировал полученный файл Интерпритатор 64.bat, а также файлы из архива lua-5.3.5_Win64_bin (lua53.dll, lua53.exe, luac53.exe, wlua53.exe), в папку со скритом Robot.lua; 5. Исполнил команду двойным нажатием на файл Интерпритатор 64.bat, и получил скомпилированный файл Robot.luac; 6. Далее переименовал Robot.luac, предварительно удалив файл Robot.lua, в Robot.lua; 7. Далее запуск скрипта в QUIK и ошибка о которой писал выше, вся последовательность действий по аналогии компиляции с помощью LuaForWindows для 32-х битной версии программы.
Прошу подсказать в чём ошибка компиляции, или где можно подчерпнуть информацию по данному вопросу.
Пользователь
Сообщений: Регистрация: 21.08.2015
18.06.2020 19:31:17
Цитата
Максим написал: касаемо компиляции ЛУА скрипта в 64 бит-ной 8-й версии
Еще б написали, в какой именно восьмой. Луа 53 начиная с 8.5, в более ранних луа 51, видимо в более ранней запускаете.
Уточните, пожалуйста, что Вы имеете в виду под "всеми" версиями? Может другие виды программ: браузерный WebQUIK, приложения для смартфонов и планшетов QUIK Android X / iQUIK X?
Пользователь
Сообщений: Регистрация: 15.09.2016
19.10.2020 12:44:28
Quik рабочее место для Windows, те что брокеры выдают, но у них как правила можно скачать одну почти последнюю версию.
Пользователь
Сообщений: Регистрация: 21.04.2020
19.10.2020 14:40:03
Цитата
Vladimir написал: Quik рабочее место для Windows, те что брокеры выдают, но у них как правила можно скачать одну почти последнюю версию.
Архивы всех доступных брокерских версий находятся у самого брокера. Если Вам необходим дистрибутив QUIK определенной версии для работы с сервером брокера - следует обратиться непосредственно к нему. Однако, если брокер по каким-либо причинам не предоставил Вам нужный архив, Вы можете скачать необходимую версию с нашего публичного FTP: Файлы из скачанного архива нужно распаковать в папку, в которой установлен Ваш QUIK (но желательнее сделать это в копию папки с терминалом, во избежание каких-либо затруднений), и подтвердить замену.
Но у меня не работает эта конструкция - module 'socket' not found.
В архиве luasocket_luasec_5.3_x64.zip есть:
Код
папка mime - внутри core.dll и core.lib
папка socket - внутри core.dll и core.lib
файл ssl.dll
файл ssl.lib
я так понимаю, что должен быть еще socket.dll для x64...
Задача - я хочу спарсить рекомендацию с сайта ru.investing.com - как один из факторов при принятии решения по инструменту. Может для этого существует более простое решение, но я пока его не нашел.
Пользователь
Сообщений: Регистрация: 03.02.2021
14.05.2021 16:32:43
Это только бинарник. Дистрибутив luasocket также включает несколько скриптов (главный - с именем socket.lua), которые потом и загружают core.dll.
Пользователь
Сообщений: Регистрация: 26.10.2021
26.10.2021 12:06:49
Добрый день. Дайте,пожалуйста, ссылочку, на luac.exe,что бы можно было скомпилировать файл для версии lua 5.3.5. На более ранние версии, которые нашел в lua for windows ругается (версия 5.1.4).
Пользователь
Сообщений: Регистрация: 05.08.2021
01.11.2021 11:51:43
Добрый день,
Lua не является разработкой компании, поэтому необходимую Вам информацию по решению проблемы предлагаем искать в Интернете.
Пользователь
Сообщений: Регистрация: 30.01.2015
01.11.2021 12:24:40
Цитата
Руслан написал: Добрый день. Дайте,пожалуйста, ссылочку, на luac.exe,что бы можно было скомпилировать файл для версии lua 5.3.5. На более ранние версии, которые нашел в lua for windows ругается (версия 5.1.4).