Params: IForeSubParams;
Свойство Params возвращает коллекцию параметров метода.
Для выполнения примера предполагается наличие модуля с идентификатором «MODULE». В глобальном пространстве имён модуля реализована функция:
Function Calculate(a, b: Integer; c: Double): Double;
Var
Result: Double;
Begin
//...
//Расчёт с учётом значений параметров
//...
Return Result
End Function Calculate;
Добавьте ссылку на системную сборку Fore, Metabase.
Sub UserProc;
Var
ForeService: IForeServices;
Runtime: IForeRuntime;
Assm: IForeAssembly;
FSub: IForeSub;
Params: IForeSubParams;
Param: IForeSubParam;
Begin
ForeService := MetabaseClass.Active As IForeServices;
Runtime := ForeService.GetRuntime;
//Загрузка сборки
Assm := Runtime.BindToAssembly("MODULE");
//Получение функции
FSub := Assm.BindToSub("Calculate");
//Задание значений параметров
Params := FSub.Params;
Param := Params.ParamByName("a");
Param.Value := 1;
Param := Params.ParamByName("b");
Param.Value := 2;
Param := Params.ParamByName("c");
Param.Value := 3.14;
//Выполнение
FSub.Invoke;
//Получение информации о результате
Debug.WriteLine(FSub.ResultName);
Debug.WriteLine(FSub.ResultType);
Debug.WriteLine(FSub.ResultValue);
End Sub UserProc;
Imports Prognoz.Platform.Interop.Fore;
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main(Params: StartParams);
Var
ForeService: IForeServices;
Runtime: IForeRuntime;
Assm: IForeAssembly;
FSub: IForeSub;
SubParams: IForeSubParams;
Param: IForeSubParam;
Begin
ForeService := Params.Metabase As IForeServices;
Runtime := ForeService.GetRuntime();
//Загрузка сборки
Assm := Runtime.BindToAssembly("MODULE");
//Получение функции
FSub := Assm.BindToSub("Calculate");
//Задание значений параметров
SubParams := FSub.Params;
Param := SubParams.ParamByName("a");
Param.Value := 1;
Param := SubParams.ParamByName("b");
Param.Value := 2;
Param := SubParams.ParamByName("c");
Param.Value := 3.14;
//Выполнение
FSub.Invoke();
//Получение информации о результате
System.Diagnostics.Debug.WriteLine(FSub.ResultName);
System.Diagnostics.Debug.WriteLine(FSub.ResultType);
System.Diagnostics.Debug.WriteLine(FSub.ResultValue);
End Sub;
При выполнении примера в среду выполнения будет загружен указанный модуль. Будет получена функция «Calculate» и заданы значения её параметров. После этого функция будет выполнена. Информация о полученном результате будет выведена в консоль среды разработки.
См. также: