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 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.