Delphi RTTI - pobieranie metody i jej wlasniwosci

Delphi RTTI - pobieranie metody i jej wlasniwosci
YA
  • Rejestracja:ponad 15 lat
  • Ostatnio:prawie 7 lat
0

Witam.

Czy wie ktos z szanownych forumowiczow jak wyciagnac z klasy metode. Otoz klasa znajduje sie w BPL stworzonym przeze mnie i jest ladowana dynamicznie. Po jej zaladowaniu rejestruje klase (dziedziczaca z TPersistent) po sekcji initialization . To dziala, wyciagniecie metody poprzez instancjaklasy.GetMethodAdress('nazwa') tez dziala. Teraz czesc problematyczna

Kopiuj
i:=0;
try
  GetPropList(testclass.ClassInfo,tkProperties + [tkMethod],PropList);
  while (PropList^[i]<>Nil)and(i<High(PropList^)) do
  begin
   ShowMessage(PropList^[i].Name+':'+PropList^[i].PropType^.Name +' name index'+ IntToStr(PropList^[i].NameIndex));
   Inc(i);
  end;
finally
  FreeMem(PropList);
end;

Owy kod pobiera propertiesy, aczkolwiek nie pobiera procedury która jest w klasie w sekcji published. Moje pytanie -dlaczego? Czy oprócz {M+} trzeba coś jeszcze ustawic w kompilatorze? jest typ tkMethod w paczce systemowej TypInfo, który ma pola odpowiadające temu co che dostać. Niestety nie wiem jak się dostać do metody poprzez RTTI. Trochę chaotycznie opisałem mój problem, ale mam nadzieje ze ktoś mi pomoże ;-)

Pozdrawiam

Kopiuj
Wodzu
  • Rejestracja:około 23 lata
  • Ostatnio:około 10 lat
0

Moze sprobuj najpierw wylistowac metody dla tej klasy bez ladowania z BPL'a?
Bedziesz przynajmniej wiedzial czy problem lezy w BPL'u czy tez nie :)


"as above, so below..all things come from the one. Now You are the victim, carried by the wind, then rooted to the ground. If You want, to learn the secrets..close Your eyes..."

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.