System.TObject.MethodAddress
Delphi
class function MethodAddress(const Name: _ShortStr): Pointer; overload;
class function MethodAddress(const Name: string): Pointer; overload;
C++
__classmethod void * __fastcall MethodAddress(const ShortString &Name)/* overload */;
__classmethod void * __fastcall MethodAddress(const UnicodeString Name)/* overload */;
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
function | public | System.pas systobj.h |
System | TObject |
Beschreibung
Gibt die Adresse einer Klassenmethode per Namen zurück.
In manchen Situationen ist es hilfreich, wenn Objektmethoden aufgerufen werden können, ohne dass deren Methodennamen im Voraus hat-codiert worden sind. Mit MethodAddress können Sie die Adresse einer solchen Methode dynamisch ermitteln, indem Sie den Methodennamen als String angeben.
Die Methode kann einfach über die Definition eines Prozeduren- oder Funktionsdatentyps aufgerufen werden. Zum Beispiel:
type TProc = procedure of object;
Weisen Sie den Objektnamen und die MethodAddress einer TMethod-Variablen zu, wie z.B.:
MethodVar.Data := Pointer(ObjectInstanceName); MethodVar.Code := ObjectInstanceName.MethodAddress('MethodNameString');
Und übergeben Sie diese in einem Variablenaufruf des Prozeduren- oder Funktionstyps:
Proc := TProc(MethodVar); Proc;