View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001655 | Far Manager | Macro | public | 2011-01-12 00:33 | 2012-01-13 19:04 |
Reporter | Raistlin | Assigned To | vskirdin | ||
Priority | normal | Severity | minor | Reproducibility | have not tried |
Status | closed | Resolution | fixed | ||
Fixed in Version | 3.0 | ||||
Summary | 0001655: Неверное сообщение об ошибке при разборе макроса | ||||
Description | Выполняем такой неправильный макрос: macro:post %a=substr(menu.getvalue(22),0,index(menu.getvalue(22)); Получаем: ╔═══════════════ Ошибка при разборе макроса ════════════════╗ ║ Строка 1, позиция 54: ║ ║ Неверное количество параметров у функции 'menu.getvalue' ║ ╟───────────────────────────────────────────────────────────╢ ║ "%a=substr(menu.getvalue(22),0,index(menu.getvalue(22));" ║ ║ ↑ ║ ╟───────────────────────────────────────────────────────────╢ ║ { OK } ║ ╚═══════════════════════════════════════════════════════════╝ На самом же деле неверное количество параметров указано у функции index(). | ||||
Tags | No tags attached. | ||||
Build | 2367 | ||||
|
проверяем: http://skirda-file.googlecode.com/files/mantis1655.1.7z желательно всю диагностику парсера :-) |
|
Проверил. ОК. Всю диагностику парсера - с удовольствием, вот только алгоритм диагностики бы придумать... |
|
Выполняем: macro:post panel.setpath(0,"\\raistlin\ddd") Получаем: ╔════ Ошибка при разборе макроса ═════╗ ║ Строка 1, позиция 17: ║ ║ Неправильный управляющий символ ║ ╟─────────────────────────────────────╢ ║ "panel.setpath(0,"\\raistlin\ddd")" ║ ║ ↑ ║ ╟─────────────────────────────────────╢ ║ { OK } ║ ╚═════════════════════════════════════╝ Выполняем: macro:post panel.setpath(0,"HKEY_CURRENT_USER\Software\Far1\CodeTables1") Получаем: г=================== Ошибка при разборе макроса ===================¬ ¦ Строка 1, позиция 17: ¦ ¦ Неправильный управляющий символ ¦ ¦------------------------------------------------------------------¦ ¦ "panel.setpath(0,"HKEY_CURRENT_USER\Software\Far1\CodeTables1")" ¦ ¦ ^ ¦ ¦------------------------------------------------------------------¦ ¦ { OK } ¦ L==================================================================- В обоих случаях стрелка тычет не туда. |
|
Стрелка указывает на начало ошибочной строки, подозреваю так и задумано. |
|
А смысл тогда в этой стрелке? Строка-то всегда одна. Говорим о "неверном управляющем символе", а тычем непонятно во что. |
|
Пытаемся через MacroView повесить на хоткей макрос (забыли сделать eval для глобальной переменной): %%CloneFPanel panel.setpath(0,"P:\Reg\Common\Far") Получаем: ╔══════ Ошибка при разборе макроса Shell\RCtrl1 ═══════╗ ║ Строка 1, позиция 16: ║ ║ Ожидается '=' ║ ╟──────────────────────────────────────────────────────╢ ║ "%%CloneFPanel panel.setpath(0,"P:\Reg\Common\Far")" ║ ║ ↑ ║ ╟──────────────────────────────────────────────────────╢ ║ { OK } ║ ╚══════════════════════════════════════════════════════╝ Может, '=' и ожидается, но, наверное, не там, куда указывает стрелка (на "a" в слове "panel"). |
|
Неправильно написали макрос: F7 print("%Temp%\q") Enter Парсер выдает неадекватное сообщение (стрелка тычет в первую кавычку, а не в 'q'): г= Error parsing macro Common\CtrlAltS =¬ ¦ Line 1, Pos 10: ¦ ¦ Bad Control Char ¦ ¦---------------------------------------¦ ¦ "F7 print("%Temp%\q") Enter" ¦ ¦ ^ ¦ ¦---------------------------------------¦ ¦ { OK } ¦ L=======================================- |
|
build 2367 Ахтунг: Не забывает, что для строки в макроса - аля Це. Это означает, что после символа '\' Far ожидает управляющий символ Так же помним, что для разных путей юзаем verb-строки (с символом '@' перед открывающей двойной кавычкой) или дублируем символ '\'. Ошибка: panel.setpath(0,"HKEY_CURRENT_USER\Software\Far1\CodeTables1") Верно : panel.setpath(0,"HKEY_CURRENT_USER\\Software\\Far1\\CodeTables1") Верно : panel.setpath(0,@"HKEY_CURRENT_USER\Software\Far1\CodeTables1") |
|
Все ОК, кроме %%CloneFPanel panel.setpath(0,"P:\Reg\Common\Far") Стрелка указывает на "p" в слове "panel", а должна, наверное, на пробел перед словом. |
|
Не должна. Тебе указывают на место, где ты "облажался", т.е. ФАР берет "%%CloneFPanel", понимает, что это переменная. Ага, знать следом идет какое-то присваивание ей, родимой (подразумевается, что следом через кучу пробельных символов идет символ '='). Запускается процесс анализа "после переменной" с терминальными символами '=' (спереди) и ';' в конце (при этом не относящиеся к делу пробельные символы игнорируются). Т.е. фактически в анализатор попадает 'panel.setpath(0,"P:\Reg\Common\Far")', но ФАР ожидает: '=' 'кучу_возможных_пробельных_символов' 'panel.setpath(0,"P:\Reg\Common\Far")' и ';'. |
|
Я был не в курсе, что парсер такие пробелы умеет игнорировать. Тогда ОК. |
Date Modified | Username | Field | Change |
---|---|---|---|
2011-01-12 00:33 | Raistlin | New Issue | |
2011-01-12 10:01 | vskirdin | Note Added: 0006088 | |
2011-01-12 10:01 | vskirdin | Assigned To | => vskirdin |
2011-01-12 10:01 | vskirdin | Status | new => feedback |
2011-01-12 12:52 | Raistlin | Note Added: 0006091 | |
2011-01-12 12:52 | Raistlin | Status | feedback => assigned |
2011-01-12 12:52 | Raistlin | Status | assigned => resolved |
2011-01-13 08:22 | vskirdin | Build | => 1786 |
2011-01-13 08:22 | vskirdin | Status | resolved => closed |
2011-01-13 08:22 | vskirdin | Resolution | open => fixed |
2011-01-13 08:22 | vskirdin | Fixed in Version | => 2.0 |
2011-01-19 00:52 | Raistlin | Note Added: 0006189 | |
2011-01-19 00:52 | Raistlin | Status | closed => feedback |
2011-01-19 00:52 | Raistlin | Resolution | fixed => reopened |
2011-01-19 11:15 | JohnDoe | Note Added: 0006195 | |
2011-01-19 12:06 | Raistlin | Note Added: 0006199 | |
2011-01-19 12:06 | Raistlin | Status | feedback => assigned |
2011-01-19 12:07 | Raistlin | Note Edited: 0006199 | |
2011-01-23 22:53 | Raistlin | Note Added: 0006237 | |
2011-01-23 23:04 | Raistlin | Note Edited: 0006237 | |
2011-09-02 08:08 | Raistlin | Note Added: 0007603 | |
2011-09-02 08:09 | Raistlin | Note Edited: 0007603 | |
2012-01-12 12:31 | vskirdin | Note Added: 0008390 | |
2012-01-12 12:31 | vskirdin | Status | assigned => feedback |
2012-01-13 12:56 | Raistlin | Note Added: 0008414 | |
2012-01-13 12:56 | Raistlin | Status | feedback => assigned |
2012-01-13 14:16 | vskirdin | Note Added: 0008415 | |
2012-01-13 14:48 | Raistlin | Note Added: 0008418 | |
2012-01-13 14:48 | Raistlin | Status | assigned => resolved |
2012-01-13 19:04 | vskirdin | Build | 1786 => 2367 |
2012-01-13 19:04 | vskirdin | Status | resolved => closed |
2012-01-13 19:04 | vskirdin | Resolution | reopened => fixed |
2012-01-13 19:04 | vskirdin | Fixed in Version | 2.0 => 3.0 |