Delphi — вызов метода записи по имени

Я написал язык сценариев для своих приложений, и моя цель состоит в том, чтобы сделать возможным публикацию любого типа из 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;  

Итак, кто-нибудь знает способ вызвать метод из записи, если у меня есть имя метода или адрес метода?

7
задан DragonFlyOfGold 17 April 2012 в 13:48
поделиться