Delphi - Invoke Record method per name
Eu escrevi uma linguagem de script para meus aplicativos e meu objetivo é tornar possível publicar qualquer tipo de delphi no script. Eu uso o rtti para automatizar essa tarefa. Para qualquer tipo de instância, como classes, uso o código a seguir para localizar e chamar um método a partir do script.
<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>
Mas com um registro este código não funciona, porque o tipo TRttiMethod não oferece um método Invoke () para tipos de registro. Eu posso acessar o método infos por Info.GetMethod ('AMethod') do tipo de registro.
Por exemplo, eu tenho um registro como este:
<code>TRecordType = record Field1, Field2 : single; procedure Calc(Value : integer); end; </code>
Então, alguém sabe uma maneira de invocar um método de um registro se eu tiver methodname ou methodaddress?