Strona 1 z 1

Pobieranie nazwy funkcji wywołującej delegate

Nowy postNapisane: czwartek, 18 sierpnia 2011, 16:30
przez Slynx
Chcę trochę odciążyć listę argumentów w funkcji kontrolującej przepływ wszystkich komunikatów w programie i przyszedł mi do głowy właśnie taki pomysł.
Czy jest możliwość pobrania nazwy funkcji WYWOŁUJĄCEJ delegate wewnątrz funkcji WYWOŁYWANEJ przez delegate ?
Szukałem w przestrzeni nazw System::Diagnostics i trochę w necie, ale nic takiego nie znalazłem.

Troszkę bardziej opisowo, jak ktoś nie zrozumiał
Funkcja wywołująca delegate wysyła komunikat + informacje o typie (jako argumenty), a funkcja przypisana do delegaty, filtruje typ komunikatu i wyświetla w odpowiednim, wcześniej zarejestrowanym elemencie. Jako, że jest też typ komunikatu "Debug" i waga "CriticalError" to przydałoby się wiedzieć jaka funkcja wysłała taki komunikat (Może da się to ściągnąć, tą nazwę metody ze stosu wywołań ? W System::Diagnostics są chyba klasy umożliwiające pobranie takiej informacji).

Re: Pobieranie nazwy funkcji wywołującej delegate

Nowy postNapisane: sobota, 29 października 2011, 14:13
przez Slynx
Tu też dorzucę odpowiedź jakby ktoś potem szukał. Ten element można ściągnąć ze stosu, ale jest to bardzo nieeleganckie, bo wymaga grzebania w Stringu, który ulega zmianie w przypadku, np. zmiany przestrzeni nazw i tym samym cała nasza funkcja się sypię. Najlepiej pozostać przy dodatkowym argumencie i korzystać z makra __FUNCTION__, które umieszcza nazwę funkcji w której zostało wywołane.