Е. Миркес - Учебное пособие по курсу «Нейроинформатика»
3. Вызов NewError с аргументом ErrorManager (вместо длинного целого передается адрес старой процедуры обработки ошибок).
4. ErrorManager:= NewError
Дать номер ошибки (GetError)Описание запроса:
Pascal:
Function GetError: Integer;
C:
Integer GetError()
Назначение — возвращает номер последней необработанной ошибки и сбрасывает ее.
Описание исполнения.
1. GetError:= Error
2. Error:= 0
Списки ошибок, возникающих в различных компонентах, даны в разделах «Ошибки компоненты …», в соответствующих разделах. Все номера ошибок каждого компонента являются трехзначными числами и начинаются с номера компонента, указанного в колонке «Ошибка» табл. 16.
Запросы, однотипные для всех компонентов
Таблица 16. Префиксы компонентов
Префикс Компонент Запроса Ошибки ex 0 Исполнитель tb 1 Задачник pr 2 Предобработчик nn 3 Сеть es 4 Оценка ai 5 Интерпретатор ответа in 6 Учитель cn 7 КонтрастерРяд запросов обрабатывается всеми компонентами, кроме компонента исполнитель, носящего вспомогательный характер. Один из таких запросов — FreeMemory — был описан в разделе «Управление памятью», а два запроса, связанных с обработкой ошибок — в разделе «Обработка ошибок». В данном разделе приводятся описания остальных запросов, имеющих одинаковый смысл для всех компонентов. В отличие от ранее описанных запросов эти запросы опираются на структуру исполняющего компонента, поэтому к имени запроса добавляется префикс, задающий компонента. Список префиксов приведен в табл. 16. Единственным исключением из числа компонентов, исполняющих перечисленные в данном разделе запросы, является компонент исполнитель.
Все описываемые в данном разделе запросы можно разбить на четыре группы:
1. Установление текущего компонента.
2. Запросы работы со структурой компонента.
3. Запросы на получение или изменение параметров структурной единицы.
4. Запуск редактора компонента.
Все имена запросов начинаются с символов «xx», которые необходимо заменить на префикс из табл. 16 чтобы получить имя запроса для соответствующего компонента. При указании ошибок используется символ «n», который нужно заменить на соответствующий префикс ошибки из табл. 16.
Далее данном разделе компонентом также называются экземпляры компонента, а не только часть программы. Например, одна из загруженных нейронных сетей, а не только программный компонент сеть.
Запрос на установление текущего компонентаК этой группе запросов относится один запрос — xxSetCurrent — не исполняемый компонентом задачник.
Сделать текущей (xxSetCurrent)
Описание запроса:
Pascal:
Function xxSetCurrent(CompName: PString): Logic;
C:
Logic xxSetCurrent(PString CompName)
Описание аргумента:
CompName — указатель на строку символов, содержащую имя компонента, которого надо сделать текущим.
Назначение — ставит указанного в параметре CompName компонента из списка загруженных компонентов на первое место в списке.
Описание исполнения.
1. Если список компонентов пуст или имя компонента, переданное в аргументе CompName, в этом списке не найдено, то возникает ошибка n01 — неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.
2. Указанный в аргументе CompName компонент переносится в начало списка.
Запросы, работающие со структурой компонентаК этой группе относятся запросы, позволяющие выяснить структуру компонента, прочитать ее или сохранить на диске.
Добавление нового экземпляра (xxAdd)
Описание запроса:
Pascal:
Function xxAdd(CompName: PString): Logic;
C:
Logic xxAdd(PString CompName)
Описание аргумента:
CompName — указатель на строку символов, содержащую имя файла компонента или адрес описания компонента.
Назначение — добавляет новый экземпляр компонента в список компонентов.
Описание исполнения.
1. Если в качестве аргумента CompName дана строка, первые четыре символа которой составляют слово File, то остальная часть строки содержит имя компонента и после пробела имя файла, содержащего компонента. В противном случае считается, что аргумент CompName содержит указатель на область памяти, содержащую описание компонента в формате для записи на диск. Если описание не вмещается в одну область памяти, то допускается включение в текст описания компонента ключевого слова Continue, за которым следует четыре байта, содержащие адрес следующей области памяти.
2. Экземпляр компонента считывается из файла или из памяти и добавляется первым в список компонентов (становится текущим).
3. Если считывание завершается по ошибке, то возникает ошибка n02 — ошибка считывания компонента, управление передается обработчику ошибок, а обработка запроса прекращается.
Удаление экземпляра компонента (xxDelete)
Описание запроса:
Pascal:
Function xxDelete(CompName: PString): Logic;
C:
Logic xxDelete(PString CompName)
Описание аргумента:
CompName — указатель на строку символов, содержащую полное имя компонента.
Назначение — удаляет указанного в параметре CompName компонента из списка компонентов.
Описание исполнения.
1. Если список компонентов пуст или имя компонента, переданное в аргументе CompName, в этом списке не найдено, то возникает ошибка n01 — неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.
Заметим, что попытка удаления младшей структурной единицы приводит к удалению всего компонента содержащего данную структурную единицу.
Запись компонента (xxWrite)
Описание запроса:
Pascal:
Function xxWrite(CompName: PString; FileName: PString): Logic;
C:
Logic xxWrite(PString CompName, PString FileName)
Описание аргументов:
CompName — указатель на строку символов, содержащую имя компонента.
FileName — имя файла или адрес памяти, куда надо записать компонента.
Назначение — сохраняет в файле или в памяти компонента, указанного в аргументе CompName.
Описание исполнения.
1. Если в качестве аргумента CompName дан пустой указатель, или указатель на пустую строку, то исполняющим запрос объектом является текущий компонент.
2. Если список компонентов пуст или имя компонента, переданное в аргументе CompName, в этом списке не найдено, то возникает ошибка n01 — неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.
3. Если в качестве аргумента FileName дана строка, первые четыре символа которой составляют слово File, то остальная часть строки содержит имя файла, для записи компонента. В противном случае FileName должен содержать пустой указатель. В этом случае запрос вернет в нем указатель на область памяти, куда будет помещено описание компонента в формате для записи на диск. Если описание не вмещается в одну область памяти, то в текст будет включено ключевое слово Continue, за которым следует четыре байта, содержащие адрес следующей области памяти.
4. Если во время сохранения компонента возникнет ошибка, то генерируется ошибка n03 — ошибка сохранения компонента, управление передается обработчику ошибок, а обработка запроса прекращается.
Вернуть имена структурных единиц (xxGetStructNames)
Описание запроса:
Pascal:
Function xxGetStructNames(CompName: PString; Var Names: PRealArray): Logic;
C:
Logic xxGetStructNames(PString CompName, RealArray* Names)
Описание аргументов:
CompName — указатель на строку символов, содержащую имя компонента или полное имя его структурной единицы.
Names — массив указателей на имена структурных единиц.
Назначение — возвращает имена всех компонентов в списке компонентов или имена всех структурных единиц структурной единицы, указанной в аргументе CompName.
Описание исполнения.
1. Если в качестве аргумента CompName дан пустой указатель, или указатель на пустую строку, то исполняющим запрос объектом является соответствующий программный компонент. В качестве ответа в указателе Names возвращается массив, каждый элемент которого является указателем на не подлежащую изменению символьную строку, содержащую имя компонента из списка. После адреса имени последнего компонента следует пустой указатель. Выполнение запроса успешно завершается.