![]() |
Liste aller Methoden eines Objects zur Laufzeit erstellen
Ich möchte mir zur Laufzeit eine Liste aller Methoden eines Objekts erstellen und diese in einer Listbox anzeigen lassen.
Gibt es eine Möglichkeit, an diese Informationen zur Laufzeit heranzukommen? Mir würde es auch reichen, wenn ich nur alle public Methoden herausbekäme. Vielen Dank euch schonmal im Vorraus :-D |
Re: Liste aller Methoden eines Objects zur Laufzeit erstelle
Wenn es dir ausreicht, alle published Methoden zu nehmen, dann ja.
|
Re: Liste aller Methoden eines Objects zur Laufzeit erstelle
Du kommst per RTTI nur an die Published Methoden ran.
Genauer gesagt, bekommst du einen untypisierten Zeiger auf die Methode(n).
Delphi-Quellcode:
Wenn du die Signatur der Methode nicht kennst, kannst du sie nicht aufrufen.
var method:TMethod;
method := GetMethodProp(obj, name_der_methode); if Assigned(method.Code) then s := TObject(method.Data).ClassName+'.'+TObject(method.Data).MethodName(method.Code) |
Re: Liste aller Methoden eines Objects zur Laufzeit erstelle
was übergebe ich denn in der Zeile:
Delphi-Quellcode:
in der Variable "name der Methode"?
method := GetMethodProp(obj, name_der_methode);
|
Re: Liste aller Methoden eines Objects zur Laufzeit erstelle
Weis nicht, ob es dafür bereits eine Funktion gibt.
Delphi-Quellcode:
procedure getMethodList(aClass:TClass; const List:TStrings);
Type PMethodEntry=^TMethodEntry; TMethodEntry=packed record size:Word; Adr:pointer; Name:Shortstring; end; var mTable:ppointer; ClassName:String; MethodCount:PWord; MethodEntry:PMethodEntry; i:integer; begin while aClass<>nil do begin mTable:=pointer(integer(aClass)+vmtMethodTable); if (mTable<>nil)and(mTable^<>nil) then begin MethodCount:=mTable^; MethodEntry:=pointer(integer(MethodCount)+2); ClassName:=aClass.ClassName; for i:=1 to MethodCount^ do begin List.add(aClass.ClassName+'.'+MethodEntry^.Name); MethodEntry:=pointer(integer(MethodEntry)+MethodEntry^.size); end; end; aClass:=aClass.ClassParent; end; end; |
Re: Liste aller Methoden eines Objects zur Laufzeit erstelle
super!! Danke Sirius deine Variante funktioniert auf Anhieb.
Nun noch eine Frage, bekommt man zusätzlich auch die Signatur heraus? |
Re: Liste aller Methoden eines Objects zur Laufzeit erstelle
|
Re: Liste aller Methoden eines Objects zur Laufzeit erstelle
Mir war doch so,
![]() |
Re: Liste aller Methoden eines Objects zur Laufzeit erstelle
Das war der entscheidene Tip. Jetzt läufts. Dankeschön :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz