CallStack Delphi

temoxa

Member
Joined
Feb 6, 2015
Messages
39
Reaction score
1
Age
26
Ребята как отловить все события , которые происходят в проекте? (Нажатие клавиш, открытие окон) И вывести это на отдельную форму, чтобы можно было смотреть какую кнопку я нажал сейчас, какое окно подвинуЛ?

пробовал разобраться с ApplicationEvents.... не добил.

Помогите советом плз.
 

LeshaRB

Staff member
Premium
Joined
Jun 11, 2007
Messages
319
Reaction score
451
Location
Минск
покапайся на delphisource.ru
Есть книга delphi руковдсто разработчика марко канту
Там целая глава посвящена этому
 

temoxa

Member
Joined
Feb 6, 2015
Messages
39
Reaction score
1
Age
26
Было б время для решения задачи, я сюда не писал бы)

Хочу в рабочем проекте собрать статистику, о том какие кнопки вообще не юзатся пользователями, и какие формы тоже не открываются...

Чтобы не прописывать метод логирования в каждом методе открытия окна или нажатия кнопки, хочу через события все отлавливать и складывать в бд, через месяц посмотреть что юзается)))

Мб готовое что - то есть?))
 

maxim220

Member
Joined
Jun 17, 2006
Messages
52
Reaction score
0
Location
Russia, SPb
Хорошее дело вы задумали :), все через это проходят. Мы - тоже проходили. Выяснилось, что никто и никогда статистику не смотрит. А делали мы все руками - факт открытия формы и факт выполнения запроса. Реализуется в виде 2-х таблиц - сеансы и деталировка.
 

LeshaRB

Staff member
Premium
Joined
Jun 11, 2007
Messages
319
Reaction score
451
Location
Минск
Хорошее дело вы задумали :), все через это проходят. Мы - тоже проходили. Выяснилось, что никто и никогда статистику не смотрит. А делали мы все руками - факт открытия формы и факт выполнения запроса. Реализуется в виде 2-х таблиц - сеансы и деталировка.

Так может сырцы дашь, а не балоболить?
В джава есть понятие перехвтчики, тут не знаю
 

LeshaRB

Staff member
Premium
Joined
Jun 11, 2007
Messages
319
Reaction score
451
Location
Минск
через месяц посмотреть что юзается)))

У меня правда один вопрос, а зачем?
Есть кнопка отчет за квартал по лоигке она и будет юзаться раз в квартал...

А допусти ежедноевное обновление если не автомам, то и каждый день будет юзаться
 

LeshaRB

Staff member
Premium
Joined
Jun 11, 2007
Messages
319
Reaction score
451
Location
Минск
В Java есть, перехватичики, думаю в последних версиях Delphi должно появиться что-то такое

@Loggable
public class BookService {

@Inject
@ThirteenDigits
private NumberGenerator numberGenerator;

public Book createBook(String title, BigDecimal price, String description) {
Book book = new Book(title, price, description);
book.setIsbn(numberGenerator.generateNumber());
return book;
}
}

@InterceptorBinding
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface Loggable {
}

@Interceptor
@Loggable
public class LoggingInterceptor {
@Inject
private Logger logger;

@AroundInvoke
public Object logMethod(InvocationContext ic) throws Exception {
logger.entering(ic.getTarget().getClass().getName(), ic.getMethod().getName());
try {
return ic.proceed();
} finally {
logger.exiting(ic.getTarget().getClass().getName(), ic.getMethod().getName());
}
}
}

public class LoggingProducer {
@Produces
public Logger produceLogger(InjectionPoint injectionPoint) {
return Logger.getLogger(injectionPoint.getMember().getDeclaringClass().getName());
}
}
 

JCDenton

Member
Joined
Feb 15, 2013
Messages
158
Reaction score
40
В топике написано "Call Stack". Вопрос: как это соотносится с "отловить все события , которые происходят в проекте? (Нажатие клавиш, открытие окон) И вывести это на отдельную форму, чтобы можно было смотреть какую кнопку я нажал сейчас, какое окно подвинуЛ?"

Это как бы разные вещи.

Если нужен логгер событий - юзай логгер. Что угодно - от OutputDebugString, до SmartInspect.
Если нужен стек вызовов - юзай трассировщики. Как правило, они цепляются на исключения, но допускают ручной вызов в произвольный момент времени. JCL (JEDI Code Library, см. модуль JclDebug), EurekaLog, madExcept.
 
Top