Online
Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.021 Beiträge
Delphi 12 Athens
|
AW: Einstieg in Zeiger auf Methoden / Funktionen
10. Jan 2024, 14:15
Name (String) zu Methodenzeiger
* das gute alte TObject.MethodAddress (welches auch der DFM-Loader benutzt)
* oder über die RTTI TRttiMethod.CodeAddress
TRttiContext.Create.GetType(TIrgendwas).GetMethods -> Methode raussuchen (gibt leider kein FindMethod) und dann TRttiMethod.CodeAddress
Delphi-Quellcode:
var Method: TMethod;
Method.Code := CodeAddress;
Method.Data := KlassenInstanz; // z.B. Self
x.OnIrgendwas := TNotifyEvent(Method); // oder welchen Typ auch immer das OnIrgendwas hat
Delphi-Quellcode:
var Event: TMethod;
Event.Code := Self.MethodAddress('Test');
Event.Data := Self;
// oder
for var Method in TRttiContext.Create.GetType(Self.ClassType).GetMethods do
if SameText(Method.Name, 'Test') then begin
Event.Code := Method.CodeAddress;
Event.Data := Self;
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
Geändert von himitsu (10. Jan 2024 um 14:19 Uhr)
|