walexw Опубликовано 23 марта, 2017 Поделиться Опубликовано 23 марта, 2017 Вопрос к знатокам Delphi Можно ли, находясь в процедуре, узнать какая другая процедура ее вызвала. Если ДА, то как? Спасибо. Цитата Ссылка на комментарий
0 krapotkin Опубликовано 23 марта, 2017 Поделиться Опубликовано 23 марта, 2017 как всегда, лучше озвучить исходную задачу Цитата Ссылка на комментарий
0 walexw Опубликовано 23 марта, 2017 Автор Поделиться Опубликовано 23 марта, 2017 Пытаюсь разобрать чужой код (проект здоровый, процедур много) По ходу заполняется TreeView, откуда не понятно, надо найти. В процедуре регистрации панели (RegisterSetupPanel) последняя строчка AddTreeTag там заполняется одна строка TreeView (значением TagPath: String), а всего строк 10, значит 10 раз отрабатывает. Внутри RegisterSetupPanel я "стою" в дебаггере, отследить получается только первую строчку, но кто "толкнул" неизвестно. Ссылки на запуск RegisterSetupPanel внутри проекта нет, вот мне и надо найти кто его "толкает". procedure TfrmSetup.RegisterSetupPanel(TagPath: String; aObject: TControl); var Frm: TCustomForm; i: integer; begin Frm := GetParentForm(TControl(aObject)); if (Frm.Width+panLeft.Width)<Screen.Width then if(Frm.Width+panLeft.Width) > Width then Width:= Frm.Width+panLeft.Width; SetActionEnabled(TPanel(aObject), false); for i := 0 to Frm.ComponentCount - 1 do if Frm.Components is TActionList then begin frmSetup.InsertComponent(Frm.Components); Frm.RemoveComponent(Frm.Components); Break; end; aObject.Parent := panMain; aObject.Visible := false; AddTreeTag(nil, TagPath).Data := aObject; end; Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 23 марта, 2017 Модераторы Поделиться Опубликовано 23 марта, 2017 переименуйте методы, компилятор скажет где она вызывается Цитата Ссылка на комментарий
0 ENERGY Опубликовано 23 марта, 2017 Поделиться Опубликовано 23 марта, 2017 (изменено) В JCL встречал подобное - ProcByLevel в JclDebug . Но без Debug info это не узнаешь. А как это будет работать на других компиляторах тоже неизвестно. Если вам не нужно получать весь стэк, то конечно лучше передавать или константой имя процедуры или через тип. Также это почитайте http://eurekalog.blogspot.com/2010/05/new-exception-class-in-delphi-2009-and_05.html Upd Я что-то подумал что вам нужно логгер сделать, по типу MadExcept, все оказалось проще. Изменено 23 марта, 2017 пользователем ENRGY Цитата Ссылка на комментарий
0 ENERGY Опубликовано 23 марта, 2017 Поделиться Опубликовано 23 марта, 2017 (изменено) Upd Цитата но кто "толкнул" неизвестно. Используйте Call Stack (View > Debug Windows) Изменено 23 марта, 2017 пользователем ENRGY Rusland и walexw 2 Цитата Ссылка на комментарий
0 krapotkin Опубликовано 23 марта, 2017 Поделиться Опубликовано 23 марта, 2017 (изменено) надо было сразу говорить, что под отладчиком Call Stack, +1 Изменено 23 марта, 2017 пользователем krapotkin walexw 1 Цитата Ссылка на комментарий
0 walexw Опубликовано 24 марта, 2017 Автор Поделиться Опубликовано 24 марта, 2017 Всем спасибо! Буду пробовать. Цитата Ссылка на комментарий
Вопрос
walexw
Вопрос к знатокам Delphi
Можно ли, находясь в процедуре, узнать какая другая процедура ее вызвала.
Если ДА, то как?
Спасибо.
Ссылка на комментарий
7 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.