| Автор |
Сообщение |
|
|
Спасибо, убедительно
Ну и чтобы уж все точки над i расставить:
Зачем сделали "@" в результате возвращаемом по debug.getinfo(1, "S").source ? В нем есть какой то смысл?
|
 |
|
|
1. Это - очень приятное для меня сообщение
2. Не... Я так не считаю. Просто противники этого решения где то вычитали, что debug не рекомендуется использовать в рабочих скриптах (дескать он - только для их отладки)... Вот и захотелось выяснить до какой степени беспочвенны их подозрения.
|
 |
|
|
Пытливые бета-тестеры обнаружили баг в исходной конструкции.
Дело в том, что если путь к каталогу очень длинный то параметр short_src возвращает обрезанный с начала путь, в котором недостающие символы заменены многоточием.
Поэтому было решено заменить short_src на source. Получилось так:Все работает хорошо, но возникают 2 вопроса:
1. Всегда ли в параметре source первый символ будет @ ?
2. Почему объект debug так редко применяется в скриптах? (Есть какие-то врожденные минусы в его использовании?)
|
 |
|
|
Вопрос снимается. Мое доморощенное решение оказалось вполне работоспособным.
Ошибка выскакивала из-за моей невнимательности (назвал пользовательскую переменную именем debug).
Хотя и виноват, конечно, но думаю что решение пригодится не только мне (на этом форуме уже нашел посты о том что вычислить путь к текущему скрипту просто невозможно). Ан - неправда
|
 |
|
|
Весь скрипт грузится при загрузке SciTE из SciTEStartup.lua командой
Функция debug.getinfo, пытающаяся определить путь, запускается по эвенту SciTE OnFinalise()...
Написал эти строки и подумал "а не повесить ли мне определение пути на какой нить другой эвент?"
Повесил на OnOpen.
Теперь могу прочитать ошибку:
attempt to index upvalue 'debug' (a boolean value)
Но только совсем не ясно почему не работает то :-/
|
 |
|
|
Методом "тыка" придумал такое решение поставленной задачи:
Но вдруг обнаружил, что механизм то срабатывает то - нет (даже закономерности не нашел
Дело в том, что эта строка запускается при закрытии SciTE (используется встроенный в него интерпретатор Lua) и затем используется для запуска внешнего js-скрипта.
Поэтому и ошибку я не вижу (просто на этой строке выполнение скрипта прерывается и SciTE закрывается).
Если эту строку я выполняю непосредственно - то все работает.
Может кто подскажет? Или есть альтернативный способ узнать путь к текущему скрипту?
|
 |
|
|
Спасибо! Самое то.
[s]И простите за невнимательность к документации[/s].
|
 |
|
|
В ходе выполнения lua-скрипта переменной присваиваются самые разнообразные значения.
Есть ли возможность узнать тип значения (что это такое - стринг, таблица, userdata?).
В частности очень интересует как можно задействовать функцию lua_istable?
Как только не писал lua_istable(value), value:lua_istable(), value.IsTable, ... - все равно lua-шный скрипт не опознает эту функцию.
|
 |
|
|
СПАСИБО. Все вроде понял.
Если понял правильно, то работу функции sort можно описать таким кодом:
|
 |
|
|
Всетаки никак не просеку логику функции сравнения :-/
Вот так, как я полагал, вообще ничего не должно сортироваться:
Однако - элементы таблицы все равно сортируются, правда в каком то диком порядке :-/
Если false заменить на true то вообще ошибка возникает.
10 раз справку по sort перечитал - бесполезно :-/
|
 |
|
|
2smz
Класс!
[s]Ребята, я не успеваю за стремительным полетом вашей мысли [/s]
|
 |
|
|
2smz
Я написал как раз не то что получаю, а то что хочу получить
2Strijar
СПАСИБО! То что надо. Работает отлично!
|
 |
|
|
Составной ключ мне не подходит (слишком непредсказуема разрядность чисел - тут сильно упрощенный пример).
В два прохода тоже почему то фигню выдает
|
 |
|
|
Никак не могу понять почему таблица не сортируется как надо.
Делаю так:Получается совсем не то, что надо получить:
|
 |
|
|
Большое СПАСИБО всем ответившим на вопрос!
Раскрою карты: в данном конкретном случае и документация и исходники у меня были изначально
Просто достаточно часто приходится сталкиваться с ситуацией, когда автор в документации забыл описать часть функций, а исходники не выкладывает по субъективным причинам.
Ну теперь то хотя бы командой table.foreach(xyz,print) смогу воспользоваться
|
 |
|
|