Execute(SubName: String; Params: Array): Variant;
SubName - наименование метода, который необходимо выполнить.
Params - параметры, которые необходимы для выполнения.
Метод Execute выполняет блок кода на Fore и возвращает результат выполнения.
Sub UserProc;
Var
Mb: IMetabase;
CodeBlock: IMetabaseCodeBlock;
Result: Variant;
Begin
Mb := MetabaseClass.Active;
CodeBlock := Mb.CreateCodeBlock;
CodeBlock.References := "MathFin";
CodeBlock.Text :=
"Function Test(x, y: Integer): Integer;" + #10 +
"Begin" + #10 +
" Return Math.RandBetweenI(x, y);" + #10 +
"End Function Test;";
If CodeBlock.Valid Then
Result := CodeBlock.Execute("Test", 1, 10);
Else
Debug.WriteLine("При компиляции кода возникла ошибка.");
Debug.WriteLine("Текст ошибки: " + CodeBlock.ErrorMessage);
Debug.WriteLine("Строка: " + CodeBlock.Line.ToString);
Debug.WriteLine("Позиция: " + CodeBlock.Position.ToString);
End If;
Dispose CodeBlock;
End Sub UserProc;
При выполнении примера будет создан объект, осуществляющий выполнение блока кода на Fore. Будет задан исполняемый код и осуществлена его синтаксическая проверка. Если код не содержит ошибок, то он будет выполнен. Выполнение осуществляется с указанными значениями параметров. Результат выполнения будет содержаться в переменной «Result». Если код содержит ошибки, то текст ошибки и место ее возникновения будут выведены в консоль среды разработки. Для выполнения кода подключается сборка платформы «MathFin».
Для выполнения примера предполагается наличие .NET-формы, расположенной на ней кнопки с наименование «Button1» и компонента TextBox с наименованием «TextBox1».
Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Var
Mb: IMetabase;
CodeBlock: IMetabaseCodeBlock;
Result: Object;
MyList: System.Collections.Generic.List <String> = New System.Collections.Generic.List <String>();
Begin
Mb := Self.Metabase;
CodeBlock := Mb.CreateCodeBlock();
CodeBlock.References := "MathFin";
CodeBlock.Text :=
"Function Test(x, y: Integer): Integer;" + char.ConvertFromUtf32(10) +
"Begin" + char.ConvertFromUtf32(10) +
" Return Math.RandBetweenI(x, y);" + char.ConvertFromUtf32(10) +
"End sub Test;";
If CodeBlock.Valid Then
Result := CodeBlock.Execute("Test", 1, 10);
Else
MyList.Add("При компиляции кода возникла ошибка.");
MyList.Add("Текст ошибки: " + CodeBlock.ErrorMessage);
MyList.Add("Строка: " + CodeBlock.Line.ToString());
MyList.Add("Позиция: " + CodeBlock.Position.ToString());
TextBox1.Lines := MyList.ToArray();
End If;
End Sub;
После выполнения примера при нажатии на кнопку будет создан объект, осуществляющий выполнение блока кода на Fore. Будет задан исполняемый код и осуществлена его синтаксическая проверка. Если код не содержит ошибок, то он будет выполнен. Выполнение осуществляется с указанными значениями параметров. Результат выполнения будет содержаться в переменной «Result». Если код содержит ошибки, то текст ошибки и место ее возникновения будут выведены в компонент «TextBox1». Для выполнения кода подключается сборка платформы «MathFin».
См. также: