Ядро управляет загрузкой библиотек алгоритмов, созданием алгоритмов и поздним связыванием методов с алгоритмами.
Ядро позволяет загрузить любое количество библиотек. Каждая библиотека предоставляет компонент с интерфейсом ImaLibrary, способный создавать определители методов — компоненты с интерфейсом ImaMethodDef.
Ядро позволяет создать алгоритм с заданным именем. При этом создаются все методы данного алгоритма. Для создания методов ядро просматривает список всех загруженных библиотек и для каждой библиотеки вызывает функцию CreateMethod столько раз, сколько методов определяет данная библиотека для алгоритма с указанным именем. Библиотеки, обрабатываемые позже, могут добавлять или переопределять методы, созданные предыдущими библиотеками. Поэтому последовательность загрузки библиотек может повлиять на состав и порядок следования методов в алгоритме. Чаще всего все методы одного алгоритма определяются в какой-то одной библиотеке.
Ядро предоставляет также возможность определять и переопределять поток вывода отладочной информации, по умолчанию наследуемый всеми создаваемыми алгоритмами.

###### Свойства и функции класса TmaMethod

- constructor Create
- constructor Create(logName:WideString)
- constructor Create(kernel:ImaKernel)
- procedure LoadLibraryByName(clsname: WideString)
- procedure LoadLibraryByClsid(clsid: WideString)
- procedure RegisterLibrary(const lib: ImaLibrary)
- procedure UnloadLibraries
- function CreateAlgorithm(name: WideString):TmaAlgorithm
- property DebugStream:TmaStream
- property DebugLevel:integer
- procedure LogError(const sender: ImaComponent; ecode: HResult; message: WideString)
- procedure LogMessage(const sender: ImaComponent;message: WideString)
- procedure Log(message:WideString)
- function LastErrorString:WideString
- procedure LogMemoryReport
- procedure LogROT
- procedure SetProgressHandler(const handler: ImaProgressHandler)
- function Progress(percent: Double; message: WideString):boolean
- procedure SetMinProgressStep(step:double)

    constructor Create

Создает ядро maCom или получает указатель на него, если ядро уже существует.

    constructor Create(logName:WideString)

Создает ядро maCom или получает указатель на него, если ядро уже существует. После этого открывает лог-файл для записи сообщений об ошибках с именем logName.

    constructor Create(kernel:ImaKernel)

Присоединение класса к уже существующему интерфейсу.

    procedure LoadLibraryByName(clsname: WideString)
    procedure LoadLibraryByClsid(clsid: WideString)

Функции загружают библиотеку алгоритмов - компонент с интерфейсом ImaLibrary, реализующий определённое количество методов.
В зависимости от выбранной функции библиотека ищется, соответственно по имени класса библиотеки clsname или по строковому представлению идентификатора класса библиотеки clsid.

Параметры:

clsname Идентификатор (ProdID) библиотеки. Строка вида "<имя сервера>.<имя библиотеки>". Для стандартных библиотек <имя сервера>=Forecsys
clsid Строка, содержащая ClsID библиотеки. Строка вида "{12121212-1212-1212-1212-121212121212}".

    procedure RegisterLibrary(const lib: ImaLibrary)

Подключает к ядру библиотеку методов, уже загруженную программой, при этом регистрирация ее в реестре не требуется.

Параметры:

lib Указатель на интерфейс подключаемой библиотеки.

    procedure UnloadLibraries

Выгружает из памяти все библиотеки. Вызовите эту функцию перед завершением работы с maCom.

    function  CreateAlgorithm(name: WideString):TmaAlgorithm

Функция создает новый алгоритм и добавляет в него все методы, найденные в библиотеках по имени алгоритма name.

    property DebugStream:TmaStream

Позволяет установить или прочитать отладочный поток - поток, в который выводятся все сообщения об ошибках. Этот поток создается автоматически при вызове конструктора класса.

    property DebugLevel:integer

Свойство используется для установки и получения режима вывода отладочных сообщений. Подробнее см. здесь.

    procedure LogError(const sender: ImaComponent;
               ecode: HResult; message: WideString)

Записать в отладочный поток сообщение об ошибке вместе со сведениями об отправителе сообщения (параметр sender).

Параметры:

sender Указатель на отправителя сообщения, может быть nil. В отладочный поток выводятся ProgID, адрес и имя компонента. ecode Код ошибки. В поток выводится краткое описание ошибки. message Дополнительные сведения, которые выводятся в поток.

    procedure LogMessage(const sender: ImaComponent;
               message: WideString)

Записать в отладочный поток отладочное сообщение вместе со сведениями об отправителе сообщения (параметр sender).

Параметры:

sender Указатель на отправителя сообщения, может быть nil. В отладочный поток выводятся ProgID, адрес и имя компонента. message Дополнительные сведения, которые выводятся в поток.

    procedure Log(message:WideString)

Записывает в отладочный поток строку message. Эквивалентна вызову функции WriteStr(message) отладочного потока.

    function LastErrorString:WideString

Возвращает последнее сообщение о последней произошедшей ошибке.

    procedure LogMemoryReport

Записать в отладочный поток сведения о расходе памяти.

    procedure LogROT

Эаписывает в отладочный поток список всех объектов в системе maCom на момент вызова. Эта функция работает только если DebugLevel не установлен в MA_DEBUG_NONE.

    procedure SetProgressHandler(const handler: ImaProgressHandler)

Установить или выключить (если handler=nil) обработчик сообщений о ходе длительных вычислений. Этот обработчик будет вызываться при вызове функции TmaKernel.Progress из определителя метода во время вычислений. Он может также прервать выполнение текущей операции.

    function Progress(percent: Double; message: WideString):boolean

Функция вызывает обработчик сообщений, установленный функцией SetProgressHandler и возвращает False, если вызыавющий может продолжать работу и True, если пользователь просит отменить операцию.

Параметры:

percent число, показывающее ход вычислений. Должно быть от нуля до единицы
message сообщение о ходе вычислений. Может быть пустое

    procedure SetMinProgressStep(step:double)

Функция позволяет уменьшить число вызовов обработчика сообщений. После первого обращения к функции Progress все последующие вызовы с тем же параметром message и параметрром percent, отличающимся от первого вызова меньше, чем на minProgressStep, будут игнорироваться.

Параметры:

step Минимальный шаг между параметрами percent в двух последовательных вызовах обработчика сообщений