Прочитал всю ту ветку, проблема решается коряво, в квике непонятно на какие грабли ещё можно наступить, проблема с OnStop и работа с таблицами, озвучена давно и не решается никак. Т.е. это приводит к непредсказуемым результатам, и техподдержке всё равно что происходит. Вроде как бы почти работает, и так сойдёт их лозунг судя по всему. Печально на это всё смотреть.
На основе описанного в документации QLUA.chm можно сделать вывод, что после вызова OnStop() не гарантировано, что main() завершится до конца, поэтому в вашем случае таблица и не удаляется.
На основе этого предлагаем добавить процедуру удаления окна в тело колбека OnStop().
Самое интересное что, чтобы я не написал в конце main, ломается всё только на DestroyTable, что происходит в этой функции что main не завершается непонятно. там операции с файлами делал, всё норм, цвета и текст в таблице менял, всё работает, кроме DestroyTable.
Как закрыть форточку?
Пользователь
Сообщений: Регистрация: 03.01.2022
25.02.2022 13:17:00
Цитата
Алексей написал: ещё кусочек кода который непонятно почему не работает Скрытый текст is_run = true message('start is_run = ' .. tostring(is_run),1) function main() skt_id = AllocTable() CreateWindow(skt_id) SetWindowPos(skt_id, 500, 0, 800, 400) message('main start is_run = ' .. tostring(is_run),1) while is_run do sleep(100) end message('main end1 is_run = ' .. tostring(is_run),1) DestroyTable(skt_id) message('main end2 is_run = ' .. tostring(is_run),1) end
function OnStop() is_run = false return 200 end message('main end2 is_run = ' .. tostring(is_run),1) эта строчка уже не исполняется, всё ломает DestroyTable(skt_id)
проверил код на новой версии 9,4,0,130, проблема та же, не закрывается форточка.
Как закрыть форточку?
Пользователь
Сообщений: Регистрация: 03.01.2022
24.02.2022 12:35:19
ещё кусочек кода который непонятно почему не работает
Скрытый текст
is_run = truemessage('start is_run = ' .. tostring(is_run),1) function main() skt_id = AllocTable() CreateWindow(skt_id) SetWindowPos(skt_id, 500, 0, 800, 400) message('main start is_run = ' .. tostring(is_run),1) while is_run do sleep(100) end message('main end1 is_run = ' .. tostring(is_run),1) DestroyTable(skt_id) message('main end2 is_run = ' .. tostring(is_run),1) end
function OnStop() is_run = false return 200 end
message('main end2 is_run = ' .. tostring(is_run),1) эта строчка уже не исполняется, всё ломает DestroyTable(skt_id)
Мы же видим, что результат привнесен текстовым режимом. Как так получилось, надо смотреть.,
Цитата
написал: через dll вроде нормально можно защитить
Тут надо сначала выяснить, от чего защищаемся. Алгоритм восстанавливать что по луа-дизасму, что по просто дизасму - примерно одно и то же, если восстанавливающий в теме. Другое дело, что это времязатратно, большинство поделий просто переписать с нуля дешевле, чем нанять спеца их курочить. Если задачу реально ставить - а именно: "сложность восстановления алгоритма достаточно высока" - то можно нормально защитить. А если "вообще чтобы никто никогда не сломал", то это нерешаемая задача.
Цитата
написал: ОТ СТЫДА попрятать!
От разного. Вот был случай например, попросили в проекте подсобить, тксть за ящик коньяку. Ну ок, подсобил. А потом один из штатных прогеров статью на хабре накропал, как надо задачку решать (которую я им и порешал) с кусками моего кода, вымарав копирайты. Неприятно же ж.
я бы скрин сделал и показал что всё в бинарном виде я делал, но тут на форуме беда с картинками. не собираюсь я ничего прятать, и не буду свои творения продавать или раздавать, мне просто надо получить кусок бинарного кода, есть идея , пробую реализовать, а тут такая засада.
string.dump не верно работает
Пользователь
Сообщений: Регистрация: 03.01.2022
03.01.2022 19:49:35
Цитата
Владимир написал: , В интерпретируемом коде сорцы попрятать?! Воистину, программисты вымерли! Ах, да - ОТ СТЫДА попрятать! ::
я думал что тут не тролей, а нет, есть! Чтобы дельного посоветовал, а стебатся мы все гаразд.
Как минимум, заменены '1A 0A ' на '1A 0D 0A ' (или \n на \r\n, если не очевидно) и выброшены управляющие символы (01 04 04 04 08 00), что рантайм и должен делать, если файл открыт не в бинарном режиме. И еще какие-то замены должны быть и, хуже того, зависящие от текущей локали.
Цитата
написал: а на кой вообще нужны эти .luac?
Некоторые на продажу делают, типа сорцы попрятать (до поры или совсем). Правда, конкретно эти luac на раз ломаются.
в бинарном открывал, через dll вроде нормально можно защитить.
string.dump не верно работает
Пользователь
Сообщений: Регистрация: 03.01.2022
03.01.2022 14:45:00
в тоже время сделал ещё эксперимент, очень простая функция без внешних переменных
function test() message('Test',1) end
function main() local f = io.open(getScriptPath() .. '\\test.luac', 'wb') f:write(string.dump(test,true)) f:flush() f:close() end
создался файл test.luac и он работает у меня взрыв мозга 1B 4C 75 6153 0019 93 0D 0A 1A 0A 04 08 04 08 08 78 56 00 00 00 00 00 00 00 00 00 00 00 28 77 только красная часть отличается
string.dump не верно работает
Пользователь
Сообщений: Регистрация: 03.01.2022
03.01.2022 14:36:43
переделал исходник, сохраняю совершенно другую функцию, результат отрицательный, не запускается в квике. этот кусочек из файла 1B 4C 75 6153 0019 93 0D 0D 0A 1A 0D 0A 04 08 04 08 08 78 56 00 00 00 00 00 00 00 00 00 00 00 в документации написано Byte numbers are in origin-1 decimal (mostly showing the arithmetic) and origin-0 hex. 1 x00: 1b 4c 75 61 LUA_SIGNATURE from lua.h. 5 x04: 52 00 Binary-coded decimal 52 for the Lua version, 00 to say the bytecode is compatible with the "official" PUC-Rio implementation. 5+2 x06: 01 04 04 04 08 00 Six system parameters. On x386 machines they mean: little-endian, 4-byte integers, 4-byte VM instructions, 4-byte size_t numbers, 8-byte Lua numbers, floating-point. These parameters must all match up between the bytecode file and the Lua interpreter, otherwise the bytecode is invalid. 7+6 x0c: 19 93 0d 0a 1a 0a Present in all bytecode produced by Lua 5.2 from PUC-Rio. Described in lundump.h as "data to catch conversion errors". Might be constructed from binary-coded decimal 1993 (the year it all started), Windows line terminator, MS-DOS text file terminator, Unix line terminator. Получается первые зеленые правильно идут, а между зелеными и красными должны быть байты размерности и их нет. И красные немного не те.
написал: смотрю кишки файла а там не хватает куска.
Выглядит так, будто были предприняты все усилия, чтобы не заработало. 1) откройте файл с 'wb', а не 'w+' 2) добавьте f:flush() перед f:close() 3) не надо main явно вызывать в конце.
1 абсолютно без разницы какая опция там, результат один и тот же 2 делал, не имеет значения, файл создаётся нормально. 3 это сделано чтобы чисто в lua запускать , без квика и нормально работает если в чистом lua запускать
string.dump не верно работает
Пользователь
Сообщений: Регистрация: 03.01.2022
03.01.2022 09:47:09
[img]file:///D:/2022-01-03_14-33-05.png[/img] [img]file:///D:/2022-01-03_14-31-04.png[/img] на синей картинке , кишки полученного файла на другой описание внутреннего формата файла
string.dump не верно работает
Пользователь
Сообщений: Регистрация: 03.01.2022
03.01.2022 09:39:12
жесть какой кривой форум, вставил картинку было всё хорошо, опубликовал, а тут хрень вылезла, ещё и не отредактируешь.
string.dump не верно работает
Пользователь
Сообщений: Регистрация: 03.01.2022
03.01.2022 09:36:13
-- пишем такой код function main() local f = io.open(getScriptPath() .. '\\1.luac', 'w+') f:write(string.dump(main,true)) f:close() end
main()
в результате получается файл 1.luac и он не запускается в quike (пишет corrupted precompiled chunk) смотрю кишки файла а там не хватает куска. [img]data:image/png;base64,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[/img]
согласно документации после версии LUA должно быть ещё 6 байт