powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как получить имя выполняемой процедуры?
15 сообщений из 15, страница 1 из 1
Как получить имя выполняемой процедуры?
    #34012946
noisette
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые господа! Собственно, вопрос измложен в названии темы: как получить имя выполняемой процедуры? Если можно, пример с куском кода, плиз.
...
Рейтинг: 0 / 0
Как получить имя выполняемой процедуры?
    #34012989
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хм... по моему никак....
а для чего это нужно? Может есть другие обходные методы решения вашей проблемы...
...
Рейтинг: 0 / 0
Как получить имя выполняемой процедуры?
    #34012998
noisette
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orunbek , конечно, можно. Например, присваивать текстовой переменной в каждой процедуре ее имя. Но то вручную и надо внимательно при возвращении из других процедур присваивать имя заново. Неудобно.
А нужно это, к примеру, для вынесения в заголовок сообщения об ошибке.
Наверняка есть API функция. Не может не быть.
...
Рейтинг: 0 / 0
Как получить имя выполняемой процедуры?
    #34013038
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для vb скорее всего есть, vb куда угодно производительность разбазаривает, лишь бы не саму программу.
так ведь получается
...
Рейтинг: 0 / 0
Как получить имя выполняемой процедуры?
    #34013054
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме как переменными нельзя. Скомпилируй прогу и попытайся найти в экзешнике название какой-нибудь процедуры. Скомпилированная процедура - это блок инструкций со смещением относительно начального адреса, занятого прогой в памяти, откуда взяться имени? В экзешнике можно найти только имена публичных и френдовых свойств и методов классов, потому что к ним нужно обращаться извне. Приватные названия не хранятся, к таким процедурам идет обращение по адресу.

Так что никакой апи для этого нет.
...
Рейтинг: 0 / 0
Как получить имя выполняемой процедуры?
    #34013078
noisette
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy , спасибо, внушает! А в случае VBA, когда нет exe-шника?
...
Рейтинг: 0 / 0
Как получить имя выполняемой процедуры?
    #34013126
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"... А в случае VBA, когда нет exe-шника?"

With Application.VBE.ActiveCodePane
.GetSelection StartLine, Startcolumn, EndLine, EndColumn
CurrentProc = .CodeModule.ProcOfLine(StartLine, vbext_pk_Proc)
End With
...
Рейтинг: 0 / 0
Как получить имя выполняемой процедуры?
    #34013150
noisette
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агромадный реШпект вам, VladConn !
Вот только что "вертел в руках" VBE.ActivecodePane :)
...
Рейтинг: 0 / 0
Как получить имя выполняемой процедуры?
    #34013178
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
My pleasure
...
Рейтинг: 0 / 0
Как получить имя выполняемой процедуры?
    #34014284
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noisette orunbek , конечно, можно. Например, присваивать текстовой переменной в каждой процедуре ее имя. Но то вручную и надо внимательно при возвращении из других процедур присваивать имя заново. Неудобно.
А нужно это, к примеру, для вынесения в заголовок сообщения об ошибке.
Наверняка есть API функция. Не может не быть.
Таким методом конечно можно, я про метод, когда из любой процедуры одной функцией узнать имя процедуры
...
Рейтинг: 0 / 0
Как получить имя выполняемой процедуры?
    #34014375
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... Таким методом конечно можно, я про метод, когда из любой процедуры одной функцией узнать имя процедуры...

Такое сделать можно, но вы наврядли это захотите. Сложно. Плюс требуется особая компиляция для создания PDB файла (опция Create Cymbolic Debug Info). Вот здесь описано (на английском), как такое делается:

http://www.fawcette.com/vsm/2002%5F05/magazine/columns/blackbelt/

Регистрация бесплатна и занимает 2 секунды.

Там используются АПИ функции. Например эта:

Private Declare Function StackWalk Lib _
"dbghelp" (ByVal MachineType As _
Long, ByVal hProcess As Long, _
ByVal hThread As Long, ByRef _
StackFrame As StackFrame, ByVal _
ContextRecord As Long, ByVal _
ReadMemoryRoutine As Long, ByVal _
FunctionTableAccessRoutine As Long, _
ByVal GetModuleBaseRoutine As Long, _
ByVal TranslateAddress As Long) As Long


Полный код автора я не нашел. Но там его адрес, можете попросить самого автора. Статья с подробным описанием метода и кусками кода написана Dan Fergus и называется Get Debug Info From Production Apps. Написана для журнала Visual Studio в 2002 году.

VladConn
...
Рейтинг: 0 / 0
Как получить имя выполняемой процедуры?
    #34014392
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо VladConn, это интересно что есть такие методы, пополним базу мозгов по программированию на VB :-)
...
Рейтинг: 0 / 0
Как получить имя выполняемой процедуры?
    #34014406
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОК. Там, на самом деле, можно сгрузить и код. Я сейчас это сделал, но, похоже, они что-то там напутали. Какой-то другой код, не от статьи.
...
Рейтинг: 0 / 0
Как получить имя выполняемой процедуры?
    #34014428
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я им только что отослал email с просьбой отыскать для меня нужный файл, это их вина. Посмотрим, все таки статье четыре года.
...
Рейтинг: 0 / 0
Как получить имя выполняемой процедуры?
    #34014519
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С помощью CodeSMART можно автоматически добавлять / удалять имена функций в код всего проекта, указанного модуля или отдельгого блока кода.
В результате из каждой процедуры можно узнать каком классе / модуле; какая процедура и на какой строке сейчас выполняется.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как получить имя выполняемой процедуры?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]