Delphi - metoda wywołania rekordu dla nazwy
Napisałem język skryptowy dla moich aplikacji i moim celem jest umożliwienie publikowania dowolnego typu z delphi w skrypcie. Używam rtti do automatyzacji tego zadania. Dla każdego typu instancji, takiego jak klasy, używam następującego kodu, aby znaleźć i wywołać metodę ze skryptu.
<code>var Info : TRttiType; Meth : TRttiMethod; Param : TArray<TValue>; Result : TValue; AnyClass : TClass; begin ... Info := RttiContext.GetType(AnyClass); Meth := Info.GetMethod('AMethod'); Setlength(Param, 1); Param[0] := TValue.From<Integer>(11); Result := Meth.Invoke(ClassInstance, Param); ... end; </code>
Ale z rekordem ten kod nie działa, ponieważ typ TRttiMethod nie oferuje metody Invoke () dla typów rekordów. Mogę uzyskać dostęp do informacji o metodzie Info.GetMethod ('AMethod') z typu rekordu.
Na przykład mam taki rekord:
<code>TRecordType = record Field1, Field2 : single; procedure Calc(Value : integer); end; </code>
Czy ktoś wie, jak wywołać metodę z rekordu, jeśli mam nazwę metody lub adres metody?