Ядро позволяет загрузить любое количество библиотек. Каждая библиотека предоставляет компонент с интерфейсом 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) библиотеки. Строка вида "<имя сервера>.<имя библиотеки>". Для стандартных библиотек <имя сервера>=Forecsysclsid Строка, содержащая 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 в двух последовательных вызовах обработчика сообщений