Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];

Вниз

Имя метода или функции   Найти похожие ветки 

 
kull   (2002-04-17 12:21) [0]

Привет всем!
Давно мучающий меня вопрос:
А можно ли каким либо способом, находясь внутри метода, узнать его имя.
Интересуют не только published, но и private,public и protected методы.


 
Игорь Шевченко   (2002-04-17 13:52) [1]

День добрый,

Конечно! Достаточно посмотреть на имя функции или метода :-)

С уважением,


 
MBo   (2002-04-17 14:19) [2]

Этот вопрос несколько раз видел в конфах borland, ответы уклончивые. (анекдот такой есть)

В нашем форуме я тоже поднимал этот вопрос - гуру, к сожалению, не заинтересовались.

вот чего я придумывал, полумеры, конечно.
недо-решение 1 для published
procedure TForm1.Button1Click(Sender: TObject);
var p:pbyte;
function DummyFunc: Pointer;
asm
xor eax, eax
end;
begin
p:=@DummyFunc;
inc(p,4);
label3.caption:=classname+"."+methodname(p);
end;

недо-решение 2

function ACaller:pointer;
asm
mov eax, [esp]
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
var p,p1:pbyte;
begin
p1:=ACaller;
dec(p1,53);
//53-магическое число, зависит от пролога процедуры, например, инициализации строк или дин. массивов
p:=methodaddress("CheckBox1Click");
label3.caption:=inttohex(cardinal(p),8);//для контроля
label4.caption:=inttohex(cardinal(p1),8);
label2.caption:=classname+"."+methodname(p1);
end;

Куда смотреть -
1) изучать состояние стека - кропотливо разбираться надо,
поскольку у задачи практического смысла мало, я не вникал пока
2) генерировать detailed map (linker)
3) сопоставлять адреса из VMT и DMT c текущими



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];

Наверх









Память: 0.81 MB
Время: 0.017 c
7-94589
Sender
2002-01-22 23:12
2002.04.29
Коипоненты для com- порта в Delphi 6


1-94517
agrig
2002-04-14 14:23
2002.04.29
как руссифицировать MessageDLG?


4-94645
BigFoot
2002-02-21 09:29
2002.04.29
Как отловить событие ?


3-94324
Uncle SAM
2002-04-02 01:47
2002.04.29
SPLIT


1-94513
cypher
2002-04-16 23:40
2002.04.29
Глупость конечно, но...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский