Escribí un script para las aplicaciones y mi objetivo es posibilitar la publicación de cualquier tipo de delphi en el script. Yo uso rtti para automatizar esta tarea. Para cualquier tipo de instancia como clases, uso el siguiente código para buscar y llamar a un método desde el script.Delphi - Método de grabación de invocación por nombre
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;
Pero con un récord este código no funciona, porque el tipo TRttiMethod no ofrece un método Invoke() para los tipos de registro. Puedo acceder a las informaciones del método mediante Info.GetMethod ('AMethod') desde el tipo de registro.
Por ejemplo, tengo un disco como este:
TRecordType = record
Field1, Field2 : single;
procedure Calc(Value : integer);
end;
Así que ¿alguien sabe una manera de invocar un método de un registro si tengo methodname o methodaddress?
¿Acaba de reinventar [DWScript] (http://code.google.com/p/dwscript/)? –
Gracias por la pista, pero sé DWScript. Mi lenguaje está destinado a ser una interfaz de script para un programa delphi donde construcciones como AObject.AFunction.AObject.DoSomething son posibles. – DragonFlyOfGold
Pensé que DWScript podría hacer todo eso, pero quizás estoy equivocado –