| Автор |
Сообщение |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 20/03/2008 17:35:53
|
jangle
Новичок
![[Avatar]](/forum/images/avatar/642e92efb79421734881b53e1e1b18b6.jpg)
Зарегистрирован: 19/03/2008 14:10:21
Сообщений: 34
Оффлайн
|
ок, спасибо за помощь, буду разбираться дальше
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 27/03/2008 13:33:10
|
jangle
Новичок
![[Avatar]](/forum/images/avatar/642e92efb79421734881b53e1e1b18b6.jpg)
Зарегистрирован: 19/03/2008 14:10:21
Сообщений: 34
Оффлайн
|
В Lua не выводится позиция ошибочного символа в строке с ошибкой?
Для примера такой код:
После его запуска, на вершине стека оказывается такое сообщение:
[string ""]:2: attempt to call method 'write1' (a nil value)
Т.е. указан только номер строки с ошибкой, а номер ошибочного символа нет. Его можно получить?
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 27/03/2008 17:21:28
|
smz
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 245
Оффлайн
|
В Lua не выводится позиция ошибочного символа в строке с ошибкой?
Не выводится.
PS. Два совета, если можно:
1) сообщение, не связанное с сабжем, должно начинать новую тему
2) если проблема, поднятая в теме, разрешилась, то принято сообщать (для общей пользы) в чём было дело, иначе у людей в дальнейшем не будет желания отвечать.
Это сообщение было редактировано 1 раз. Последнее обновление произошло в 27/03/2008 17:24:48
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 27/03/2008 17:51:32
|
jangle
Новичок
![[Avatar]](/forum/images/avatar/642e92efb79421734881b53e1e1b18b6.jpg)
Зарегистрирован: 19/03/2008 14:10:21
Сообщений: 34
Оффлайн
|
smz wrote:PS. Два совета, если можно:
1) сообщение, не связанное с сабжем, должно начинать новую тему
2) если проблема, поднятая в теме, разрешилась, то принято сообщать (для общей пользы) в чём было дело, иначе у людей в дальнейшем не будет желания отвечать.
Проблема частично устранилась заменой Lua.dll на новую версии 5.1.3
Частично, потому что на вершине стека все-таки стали появлятся сообщения об ошибках, однако например в таких случаях:
выдается неинформативная строка
attempt to call a nil value
Нет номера строки с ошибкой!
Это сообщение было редактировано 2 раз. Последнее обновление произошло в 27/03/2008 17:53:27
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 27/03/2008 19:04:21
|
z00n
Постоянный посетитель
Зарегистрирован: 15/02/2008 12:15:56
Сообщений: 96
Оффлайн
|
jangle wrote:
Проблема частично устранилась заменой Lua.dll на новую версии 5.1.3
Частично, потому что на вершине стека все-таки стали появлятся сообщения об ошибках, однако например в таких случаях:
выдается неинформативная строка
attempt to call a nil value
Нет номера строки с ошибкой!
Странно, здесь нет попытки вызова nil value - здесь мы имеем банальную синтаксическую ошибку - expression in statement position.
Вот что говорит интерпретатор lua:
Т.е. луа ожидает , и заметьте, номер строки выводится.
А ваше сообщение attempt to call a nil value скорее всего относится к способу, которым вы обрабатываете ошику.
Приведите код, которым вы вызываете луа.
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 28/03/2008 08:44:04
|
moteus
Постоянный посетитель
Зарегистрирован: 15/01/2008 22:12:04
Сообщений: 43
Оффлайн
|
Т.е. указан только номер строки с ошибкой, а номер ошибочного символа нет. Его можно получить?
В принцыпе эта информация обычно не нужна, т.к. в одной строке не содержится большого кол-ва однотипных операций.
И если посмотреть на пириведенный пример то масто ошибки становится очевидным.
Может быть вы приведете код где это действительно необходимо?
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 28/03/2008 11:27:10
|
jangle
Новичок
![[Avatar]](/forum/images/avatar/642e92efb79421734881b53e1e1b18b6.jpg)
Зарегистрирован: 19/03/2008 14:10:21
Сообщений: 34
Оффлайн
|
z00n wrote:
Приведите код, которым вы вызываете луа.
Код у меня на PowerBASIC, но думаю все и так понятно. Правда некоторые функции Lua названы в хидерах PB чуть иначе чем в C.
Вероятно это сделано для совместимости с версией 5.0
Это сообщение было редактировано 1 раз. Последнее обновление произошло в 28/03/2008 11:27:37
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 28/03/2008 11:41:29
|
jangle
Новичок
![[Avatar]](/forum/images/avatar/642e92efb79421734881b53e1e1b18b6.jpg)
Зарегистрирован: 19/03/2008 14:10:21
Сообщений: 34
Оффлайн
|
moteus wrote:
Может быть вы приведете код где это действительно необходимо?
У меня просто была задумка, сделать Lua скриптовым языком в моем приложении. На подобие как VBA встроен в MS Office, или внутренний язык 1C. Чтобы был, некий редактор в котором пишется "конфигурация" на Lua. Естественно, в процессе отладки такого скрипта будет много ошибок, синтаксических и т.д. И нужно, чтобы гарантированно выводился номер строки с ошибкой, чтобы пользователь мог понять в каком месте он ошибся, "attempt to call a nil value" - не дает никакой информации об этом
Это сообщение было редактировано 1 раз. Последнее обновление произошло в 28/03/2008 11:42:33
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 28/03/2008 12:51:16
|
smz
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 245
Оффлайн
|
Так делали в Lua 5.0, для Lua 5.1 это неправильно. Вот цитата из справочника (выделение - моё):
To have access to these libraries, the C host program should call the luaL_openlibs function, which opens all standard libraries. Alternatively, it can open them individually by calling luaopen_base (for the basic library), luaopen_package (for the package library), luaopen_string (for the string library), luaopen_table (for the table library), luaopen_math (for the mathematical library), luaopen_io (for the I/O library), luaopen_os (for the Operating System library), and luaopen_debug (for the debug library). These functions are declared in lualib.h and should not be called directly: you must call them like any other Lua C function, e.g., by using lua_call.
Читай справочник. luaL_loadbuffer только помещает на стек, а вот lua_pcall как раз запускает на исполнение. Без этого, ф-ция start и всё остальное в скрипте ещё не видны из Lua. Кроме того, вместо %LUA_MULTRET здесь лучше поставить 0, так как твой PowerBASIC-код не использует значения, возвращаемые исполненным скриптом.
3-й параметр задан единицей, но не вижу обработку величины, возвращаемой функцией start.
Это сообщение было редактировано 2 раз. Последнее обновление произошло в 28/03/2008 12:55:21
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 28/03/2008 14:32:59
|
jangle
Новичок
![[Avatar]](/forum/images/avatar/642e92efb79421734881b53e1e1b18b6.jpg)
Зарегистрирован: 19/03/2008 14:10:21
Сообщений: 34
Оффлайн
|
Так делали в Lua 5.0, для Lua 5.1 это неправильно. Вот цитата из справочника (выделение - моё):
Но тем не менее, в Lua 5.1 такой способ подключения работает без ошибок
Читай справочник. luaL_loadbuffer только помещает на стек, а вот lua_pcall как раз запускает на исполнение. Без этого, ф-ция start и всё остальное в скрипте ещё не видны из Lua. Кроме того, вместо %LUA_MULTRET здесь лучше поставить 0, так как твой PowerBASIC-код не использует значения, возвращаемые исполненным скриптом
Поставил 0 вместо %LUA_MULTRET, ничего не изменилось
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 28/03/2008 14:38:20
|
jangle
Новичок
![[Avatar]](/forum/images/avatar/642e92efb79421734881b53e1e1b18b6.jpg)
Зарегистрирован: 19/03/2008 14:10:21
Сообщений: 34
Оффлайн
|
Кстати, заметил еще одну странность, в коде:
Выдается ошибка - attempt to call a nil value
а если так:
Правильное описание ошибки - [string "start"]:3: attempt to call global 'xxxxxx' (a nil value)
Что-то на глюк уж больно смахивает.....
Это сообщение было редактировано 1 раз. Последнее обновление произошло в 28/03/2008 14:38:43
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 28/03/2008 15:20:37
|
smz
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 245
Оффлайн
|
jangle wrote:
Так делали в Lua 5.0, для Lua 5.1 это неправильно. Вот цитата из справочника (выделение - моё):
Но тем не менее, в Lua 5.1 такой способ подключения работает без ошибок
Только иногда, случайно и непредсказуемо. Хотим играть в лотерею или программировать надёжно?
Поставил 0 вместо %LUA_MULTRET, ничего не изменилось
Не изменилось, потому что твой скрипт ничего не возвращает. Как только он изменится и будет что-то возвращать, возвращаемые значения попадут на стек, что может быть чревато, если хост-программа не следит за балансом стека.
Кстати, заметил еще одну странность, в коде:
Выдается ошибка - attempt to call a nil value
Что-то на глюк уж больно смахивает.....
Это точно глюк, но только не в Lua.
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 28/03/2008 15:53:49
|
jangle
Новичок
![[Avatar]](/forum/images/avatar/642e92efb79421734881b53e1e1b18b6.jpg)
Зарегистрирован: 19/03/2008 14:10:21
Сообщений: 34
Оффлайн
|
smz wrote:
Только иногда, случайно и непредсказуемо. Хотим играть в лотерею или программировать надёжно?
Поставил luaL_openlibs, все нормально работает как и прежде
Это точно глюк, но только не в Lua.
А в чем тогда глюк?
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 28/03/2008 16:30:56
|
smz
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 245
Оффлайн
|
jangle wrote:
smz wrote:
Только иногда, случайно и непредсказуемо. Хотим играть в лотерею или программировать надёжно?
Поставил luaL_openlibs, все нормально работает как и прежде
Прости, но ты как видно любишь поспорить. Причём даже не со мной, а со Справочником, где ясно написано, что так, как у тебя было, делать нельзя. И что значит "всё нормально работает", если программа выдаёт совершенно нерелевантные ошибки (за 4 года программирования на Lua я даже не видел таких ошибок).
smz wrote:Это точно глюк, но только не в Lua.
А в чем тогда глюк?
Глюк почти наверняка (99.9%) или в твоём коде, или в коде связки PowerBasic - Lua. Не могу сказать точнее, не видя кода.
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 28/03/2008 16:42:30
|
jangle
Новичок
![[Avatar]](/forum/images/avatar/642e92efb79421734881b53e1e1b18b6.jpg)
Зарегистрирован: 19/03/2008 14:10:21
Сообщений: 34
Оффлайн
|
Глюк почти наверняка (99.9%) или в твоём коде, или в коде связки PowerBasic - Lua. Не могу сказать точнее, не видя кода.
В принципе, весь код показан в моем предыдущем посте. Возможно ошибка в связи PowerBasic - Lua, попробую сличить хидеры от C и PB. Кстати, момент с выдачей ошибки - единственная проблема, все остальное работает без нареканий.
|
|
|
 |
|
|