Difference between revisions of "GetModuleFunction"

From SunFlurry wiki
Jump to: navigation, search
1>Admin
(Created page with "{{infobox function |name=GetModuleFunction |object=Функции общего назначения |caption=Системные функции |type=1 |status=2 |db=0 |exc...")
 
m (1 revision imported)
 
(No difference)

Latest revision as of 11:59, 1 April 2026

  GetModuleFunction (Системные функции)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в число, неверный уровень функции.
Визуальность:Нет

Функция отдает объект компилированной функции, находящейся на требуемом уровне над текущей исполняемой функцией (этот объект, если найден, всегда включает текущую исполняемую функцию). В дальнейшем этот объект можно использовать для вызова функций по именам (см. ExecuteFunction), или экспортирования функции.

Синтаксис

GetModuleFunction(<Уровень родительской функции от текущей (INT)>=0):<Требуемая функция в виде объекта (COMPILEDFUNCTION)>

Аргументы

  • <Уровень родительской функции от текущей (INT)> - (необязательный аргумент) Аргумент задает требуемый уровень родительской функции. По-умолчанию, 0, объект содается для текущей функции. Нужнопонимать, что уровень родителя здесь, это не уровень вызова (рекурсии), а уровень исходного текста.

Возвращаемое значение

Возвращает новый объект компилированной функции, который можно исполнить с помощью функций Exec и ExecEx, либо экспортировать в память с помощью SaveFunctionToBuffer.

Примеры

//Пример показывает разницу между уровенем исходного текста при получении функции и уровнем рекурсии,
//  а также глобальными переменными, доступными в контексте исполнения, а не внутри объекта функции.
Var Счетчик Export;

  Function Рекурсия()
    Счетчик:=Счетчик+1;
    Message("Счетчик (вложенность вызова): "+Счетчик);
    If Счетчик>99 Then
      Message("Выходим из рекурсии.");
      Exit;
    EndIf;
    //Получим объект функции, в которой располагается текущая функция Рекурсия()
    аФункция:=GetModuleFunction(1);
    //Выполним вызов из этого объекта
    ExecuteFunction("Рекурсия",аФункция);
  EndFunction

Счетчик:=0;
Рекурсия();
//В логе должно отобразиться: 100 строк "Счетчик (вложенность вызова): ??" и последняя строка "Выходим из рекурсии.".