02.02.2011, 19:47 | #21 |
Участник
|
Именно что! а то надоедает везде, где можно, сперва присваивать возвращаемое значение локальной переменной и потом уже эту переменную возвращать. В случае со "сложносочиненными" объектами это еще и к тормозам может приводить из-за изменения числа ссылок и необходимости обработки этого дела. В Visual Studio вся прелесть останова на закрывающей скобке и состоит в том, что можно посмотреть возвращаемое значение независимо от того, возвращается ли переменная или какое-то выражение. По идее для X++ это должно быть относительно просто реализовать, ведь там возвращаемое значение вычисляется и кладется на вершину стека, откуда его потом берет вызывающий код...
PS. Но если на закрывающей скобке можно будет хотя бы точку останова поставить и ловить ее независимо от числа return'ов в теле метода, то это тоже неплохо. |
|
19.05.2011, 16:06 | #22 |
Участник
|
Цитата:
Есть проблема - когда код написан на clicked() методе формы, то в стеке вызовов он отображается как (C)\Classes\FormButtonControl\Clicked что естественно неудобно, так как не дает понимания в какой же именно форме исполнялся код. Иногда приходится разбираться с чужим проблемным кодом, смотришь логи со стеками вызовов, а они как дразнят! Вроде и стек вызовов есть, но фиг поймешь откуда же эта гадость лезет. (В случае если код исполняется в методе формы, класса или таблички, то все нормально - мы можем в стеке вызовов определить объект на котором сидит метод) Или может запретить писать код в Clicked() методах кнопок ... |
|
19.05.2011, 16:31 | #23 |
Участник
|
Цитата:
Сообщение от Logger
Не смотря на это можно пропихнуть еще одну хотелку ?
Есть проблема - когда код написан на clicked() методе формы, то в стеке вызовов он отображается как (C)\Classes\FormButtonControl\Clicked что естественно неудобно, так как не дает понимания в какой же именно форме исполнялся код. Иногда приходится разбираться с чужим проблемным кодом, смотришь логи со стеками вызовов, а они как дразнят! Вроде и стек вызовов есть, но фиг поймешь откуда же эта гадость лезет. (В случае если код исполняется в методе формы, класса или таблички, то все нормально - мы можем в стеке вызовов определить объект на котором сидит метод) Или может запретить писать код в Clicked() методах кнопок ... |
|
|
За это сообщение автора поблагодарили: Logger (5). |
19.05.2011, 17:07 | #24 |
Участник
|
Ну хотя бы так.
Я думаю мы и на ax6 нескоро перейдем. Так что особой разницы нет в каком именно релизе согласятся это править. |
|
19.05.2011, 17:10 | #25 |
Модератор
|
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. |
|
20.05.2011, 02:33 | #26 |
Участник
|
Оказывается можно достичь поставленной задачи не трогая ядро.
Когда кнопка получается фокус то дергается метод \Classes\SysSetupFormRun\selectControl Можно в нем запоминать имя формы и имя контрола кнопки. Затем при работе Application.logInsert Application.logUpdate Application.logDelete анализировать стек вызовов и если он начинается со строки @"(C)\Classes\FormButtonControl\Clicked" то доставать запомненные имя формы и контрола и прописывать их куда нам надо, например подменять в стеке вызовов строку @"(C)\Classes\FormButtonControl\Clicked" на @"\Forms\ИмяФормы\...\ИмяКонтрола\Clicked" Попробовал - работает. Последний раз редактировалось Logger; 20.05.2011 в 02:41. |
|
|
За это сообщение автора поблагодарили: gl00mie (5). |
20.05.2011, 02:35 | #27 |
Участник
|
Но это несколько кривенько. Лучше конечно ядро пофиксить. А то получается некоторая непоследовательность. Если метод живет на форме/классе/таблице то он в стеке вызовов виден, как и содержащий его объект - форма/класс/таблица а если он на кнопке, то ни форма ни кнопка не видны. Дискриминация.
|
|
Теги |
button, clicked, stack trace, stack trace clicked, кнопка, стек вызовов |
|
|