Latest post of the previous page:
Shmuel,Да, спасибо, string.match работает. Вызывает беспокойство, что теперь обычная строка так вот запросто может перестать быть валидной...
Latest post of the previous page:
Shmuel,На самом деле это не совсем обычная строка, это бинарный гуид. Посмотрите на эту строку "через" far.Show().
Убрал из макросов все указанные
win.Uuid
-ы - вылетать при старте перестало. НО!а какая связь между падениями колорера и проверкой валидности строк в луамакро?buniak_a_h wrote: ↑Sun 12 Apr, 2020 00:47В тему колорера я всё это описал, но, думаю, эту проверку на валидность надо убирать всенепременно.
Падает в версии 5580; в версии 5579 - нет. В новостях написано только:
Shmuel добавил к этой новости, что заменили библиотеку1. Изменён формат флагов фильтров в базе данных (задел на будущее - хранить блобы было не самой лучшей идеей). В целях совместимости пока поддерживается чтение старого формата.
Если имеется два изменения, про одно написано, что в нём обеспечена совместимость, а в другом - нет, но вновь появившиеся вылеты однозначно следствие второго изменения. Ну, или есть другие, о которых авторы умолчали. Не хочется об этом думать …
Code: Select all
GetContentFields = function(col_set, param2)
if true then return false end
:something(..)
заменять на string.something(..)
что ли?Да, это ошибка в примере, ибо операции, рассчитанные на обработку UTF-8, здесь производятся на куске произвольного, возможно не-текстового файла.citRiks wrote: ↑Thu 30 Apr, 2020 11:22Code: Select all
--было: --s = s:gsub("%s+", " "):match("[%w_].*")
Нет. Просто не надо вызывать UTF-8 функции на произвольных строках.
Оказалось что все-таки StackTracePlus, просто для воспроизведеника надо совсем перезгружаться,
Code: Select all
local STP = require("StackTracePlus")
if STP then debug.traceback = function(...) return string.gsub(STP.stacktrace(...), "\r\n", "\n") end end
Code: Select all
local STP = require("StackTracePlus")
if STP then debug.traceback = function(...) return STP.stacktrace(...):gsub("\r\n", "\n") end end
Это кошмар, что Вы наделали в версии 5580! Ну как я узнаю без проверки, правильная UTF-8 строка сия последовательность байтов, или нет! Раньше же как-то работало, может и не строго, зато правильно («правильной называется программа, работающая в соответствии ожиданием удовлетворительное время»©Вирт, "Основы структурного программирования") Т.е., я могу узнать, но переписывать ВСЕ вызовы вида строка:функция-utf8() на то же, но с проверкой - ну, чего говорить, сами понимаете, что это - нонсенс.
debug.traceback
- с какого перепуга эта строка стала некорректной UTF-8-строкой ??? Ну однако все еще непонятна магия замены
переменная:чтото(..)
на строка.чтото(..)
Это интересно. Нельзя ли указать точное место вашего изменения?buniak_a_h wrote: ↑Thu 30 Apr, 2020 13:27 Пришлось даже вносить изменения в поставляемый LuaMacro.lua, заменяя строка:gsub на string.gsub(строка)
Я не исключаю возврата, просто пока не убеждён, что возврат нужен. У меня постоянно загружены более десятка LuaFAR-плагинов плюс куча макросов (на 90% моих), и проблем вроде не испытываю.buniak_a_h wrote: ↑Thu 30 Apr, 2020 13:27 Вы писали где-то, что если это приведёт к неудобствам, то придётся вернуть. По-моему (и не только) - пора уже.
Никакой мотивации у меня изначально не было. Просто было произведено обновление библиотеки luautf8 с релиза 0.1.1 2015 года на релиз 0.1.2 2020 года.
а можно поспокойнее? если я правильно помню, это вы жаловались, что find возвращает позиции в байтах. для вас сделали в символах. мне этот переход много чего сломал, но я не помню хоть одно сообщения от моего имени на форуме в стиле, всё плохо — верните как было. теперь библиотека, которую добавили из-за вас хочет для работы с utf8 как ни странно utf8. это офигеть как неожиданно, да? я например только рад, что потенциальные косяки в моём коде вылезут раньше, чем могли бы. отказываться от этого — плохое решение.