|
|
|
Как получить имя выполняемой процедуры?
|
|||
|---|---|---|---|
|
#18+
Уважаемые господа! Собственно, вопрос измложен в названии темы: как получить имя выполняемой процедуры? Если можно, пример с куском кода, плиз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 15:06 |
|
||
|
Как получить имя выполняемой процедуры?
|
|||
|---|---|---|---|
|
#18+
хм... по моему никак.... а для чего это нужно? Может есть другие обходные методы решения вашей проблемы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 15:18 |
|
||
|
Как получить имя выполняемой процедуры?
|
|||
|---|---|---|---|
|
#18+
orunbek , конечно, можно. Например, присваивать текстовой переменной в каждой процедуре ее имя. Но то вручную и надо внимательно при возвращении из других процедур присваивать имя заново. Неудобно. А нужно это, к примеру, для вынесения в заголовок сообщения об ошибке. Наверняка есть API функция. Не может не быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 15:21 |
|
||
|
Как получить имя выполняемой процедуры?
|
|||
|---|---|---|---|
|
#18+
для vb скорее всего есть, vb куда угодно производительность разбазаривает, лишь бы не саму программу. так ведь получается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 15:31 |
|
||
|
Как получить имя выполняемой процедуры?
|
|||
|---|---|---|---|
|
#18+
Кроме как переменными нельзя. Скомпилируй прогу и попытайся найти в экзешнике название какой-нибудь процедуры. Скомпилированная процедура - это блок инструкций со смещением относительно начального адреса, занятого прогой в памяти, откуда взяться имени? В экзешнике можно найти только имена публичных и френдовых свойств и методов классов, потому что к ним нужно обращаться извне. Приватные названия не хранятся, к таким процедурам идет обращение по адресу. Так что никакой апи для этого нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 15:35 |
|
||
|
Как получить имя выполняемой процедуры?
|
|||
|---|---|---|---|
|
#18+
Antonariy , спасибо, внушает! А в случае VBA, когда нет exe-шника? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 15:41 |
|
||
|
Как получить имя выполняемой процедуры?
|
|||
|---|---|---|---|
|
#18+
"... А в случае VBA, когда нет exe-шника?" With Application.VBE.ActiveCodePane .GetSelection StartLine, Startcolumn, EndLine, EndColumn CurrentProc = .CodeModule.ProcOfLine(StartLine, vbext_pk_Proc) End With ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 15:54 |
|
||
|
Как получить имя выполняемой процедуры?
|
|||
|---|---|---|---|
|
#18+
Агромадный реШпект вам, VladConn ! Вот только что "вертел в руках" VBE.ActivecodePane :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 15:59 |
|
||
|
Как получить имя выполняемой процедуры?
|
|||
|---|---|---|---|
|
#18+
My pleasure ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 16:04 |
|
||
|
Как получить имя выполняемой процедуры?
|
|||
|---|---|---|---|
|
#18+
noisette orunbek , конечно, можно. Например, присваивать текстовой переменной в каждой процедуре ее имя. Но то вручную и надо внимательно при возвращении из других процедур присваивать имя заново. Неудобно. А нужно это, к примеру, для вынесения в заголовок сообщения об ошибке. Наверняка есть API функция. Не может не быть. Таким методом конечно можно, я про метод, когда из любой процедуры одной функцией узнать имя процедуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 06:50 |
|
||
|
Как получить имя выполняемой процедуры?
|
|||
|---|---|---|---|
|
#18+
... Таким методом конечно можно, я про метод, когда из любой процедуры одной функцией узнать имя процедуры... Такое сделать можно, но вы наврядли это захотите. Сложно. Плюс требуется особая компиляция для создания 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 08:54 |
|
||
|
Как получить имя выполняемой процедуры?
|
|||
|---|---|---|---|
|
#18+
Спасибо VladConn, это интересно что есть такие методы, пополним базу мозгов по программированию на VB :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 09:02 |
|
||
|
Как получить имя выполняемой процедуры?
|
|||
|---|---|---|---|
|
#18+
ОК. Там, на самом деле, можно сгрузить и код. Я сейчас это сделал, но, похоже, они что-то там напутали. Какой-то другой код, не от статьи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 09:10 |
|
||
|
Как получить имя выполняемой процедуры?
|
|||
|---|---|---|---|
|
#18+
Я им только что отослал email с просьбой отыскать для меня нужный файл, это их вина. Посмотрим, все таки статье четыре года. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 09:18 |
|
||
|
Как получить имя выполняемой процедуры?
|
|||
|---|---|---|---|
|
#18+
С помощью CodeSMART можно автоматически добавлять / удалять имена функций в код всего проекта, указанного модуля или отдельгого блока кода. В результате из каждой процедуры можно узнать каком классе / модуле; какая процедура и на какой строке сейчас выполняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 09:49 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=34013078&tid=2165259]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
153ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 422ms |

| 0 / 0 |
