IMetabaseCodeBlock.Execute

Синтаксис

Execute(SubName: String; Params: Array): Variant;

Параметры

SubName - наименование метода, который необходимо выполнить.

Params - параметры, которые необходимы для выполнения.

Описание

Метод Execute выполняет блок кода на Fore и возвращает результат выполнения.

Пример 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"110);
    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».

Пример Fore.NET

Для выполнения примера предполагается наличие .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"110);
    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».

См. также:

IMetabaseCodeBlock