AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.10.2011, 14:49   #1  
AraraT® is offline
AraraT®
Участник
1C
 
158 / 106 (4) +++++
Регистрация: 13.01.2006
Адрес: Республика Татарстан, г. Казань
Если бы отладчик Аксапты умел вызывать методы при написании их, например, в окне "Watch" (как это умеет 1С), тогда бы не пришлось заморачиваться с перегрузкой методов и написанием собственных...
__________________
Айрат Вильданов.
skype: vildanov.a
Старый 24.10.2011, 16:40   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от AraraT® Посмотреть сообщение
Если бы отладчик Аксапты умел вызывать методы при написании их, например, в окне "Watch" (как это умеет 1С), тогда бы не пришлось заморачиваться с перегрузкой методов и написанием собственных...
нет, ни в коем случае.

тут либо не давать возможность вызывать методы,

либо четко различать методы с побочными действиями (first, next, checkAndInsertData, findOrCreate, getSomthing, calcSomthing) от методов без побочных действий (standartCurrency...)
(но тогда Хаксель выйдет с безумными монадами)

не, нафиг, нафиг.
__________________
полезное на axForum, github, vk, coub.
Старый 25.10.2011, 12:53   #3  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от AraraT® Посмотреть сообщение
Если бы отладчик Аксапты умел вызывать методы при написании их, например, в окне "Watch" (как это умеет 1С), тогда бы не пришлось заморачиваться с перегрузкой методов и написанием собственных...
X++:
class DEV_DebugHelper
{
     string expression;
     AnyType someObject;
     AnyType someObject()
     {
           return someObject;
     }
     string toString()
     {
          evalBuf(expression, this);
     }
}
В дебаггере меняете expression и смотрите результат в toString.

Приходится прицеплять к нужным объектам (присваивать someObject в коде)

Я так смотрел LedgerDimensionы в Ax2012, когда там хелперов для дебаггеров еще не написали. Может вы сможете развить идею
За это сообщение автора поблагодарили: Maxim Gorbunov (4), mazzy (5), Logger (5), AraraT® (2), S.Kuskov (5).
Старый 25.10.2011, 13:31   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,983 / 3273 (117) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от belugin Посмотреть сообщение
В дебаггере меняете expression и смотрите результат в toString.

Приходится прицеплять к нужным объектам (присваивать someObject в коде)

Я так смотрел LedgerDimensionы в Ax2012, когда там хелперов для дебаггеров еще не написали. Может вы сможете развить идею
Хорошая идея.
Тоже хотел такое предложить, хотя сам на практике и не использовал.

Есть один неясный момент. Если в дебагере некорректно написать код, которые попробует выполнить ваш toString, то может получиться исключение. Транзакции при этом не откатываются ? Если да, то как с этим боролись ?
Старый 25.10.2011, 13:54   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,983 / 3273 (117) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от belugin Посмотреть сообщение
Приходится прицеплять к нужным объектам (присваивать someObject в коде)
А вот интересно, возможно ли в X++ каким-то образом перебрать все объекты в памяти и получить к ним доступ ?
Похоже что нет.
Иначе можно было бы сделать полноценную надстройку над отладчиком, без необходимости присваивания someObject в коде.

P.S. когда ковырял Heapcheck, то находил там методы,
\System Documentation\Classes\HeapCheck\getUnfreedCursor
\System Documentation\Classes\HeapCheck\getUnfreedObject

Причем getUnfreedCursor() возвращает common
Не проверял, но возможно, что для курсоров возможен перебор всех объектов.

Хотя нам этого мало. Нужен перебор любых объектов и возможность сослаться на них в отладчике по какому-то идентификатору, например задавая его в строке expression
Старый 25.10.2011, 14:22   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Про exceptionы - не проверял
Теги
debugger, объект, отладка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX 2012: Правила именования объектов sukhanchik DAX: Программирование 28 19.10.2013 17:24
Как сильно модифицировано ваше приложение Аксапты? (% обновленных партнерских объектов) mazzy DAX: Прочие вопросы 1 12.03.2009 17:41
Как сильно модифицировано ваше приложение Аксапты? (% новых партнерских объектов) mazzy DAX: Прочие вопросы 1 12.03.2009 17:41
Как сильно модифицировано ваше приложение Аксапты? (% обновленных объектов) mazzy DAX: Прочие вопросы 1 12.03.2009 17:41
Как сильно модифицировано ваше приложение Аксапты? (% новых объектов) mazzy DAX: Прочие вопросы 1 12.03.2009 17:40

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:36.