Я написал язык сценариев для своих приложений, и моя цель состоит в том, чтобы сделать возможным публикацию любого типа из delphi в сценарии. Я использую rtti для автоматизации этой задачи. Для любого типа экземпляра, такого как классы, я использую следующий код, чтобы найти и вызвать метод из скрипта.
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;
Но с записью этот код не работает, потому что тип TRttiMethod не предлагает метод Invoke() для типов записей. Я могу получить доступ к информации о методе с помощью Info.GetMethod('AMethod') из типа записи.
Например, у меня есть такая запись:
TRecordType = record
Field1, Field2 : single;
procedure Calc(Value : integer);
end;
Итак, кто-нибудь знает способ вызвать метод из записи, если у меня есть имя метода или адрес метода?