Библиотеки
Библиотеки функций представляют собой текстовые файлы, которые содержат описания библиотечных функций и общих переменных. Эти файлы имеют расширение *.ibl в кодировке OEM cp 866. Количество используемых библиотек не ограничено.
Подключение библиотеки функций
Для вызова библиотечной функции из текста программы, библиотеку, содержащую эту функцию, необходимо предварительно подключить. Для подключения к бланку (типовой операции) библиотеки функций применяется ключевое слово ИСПОЛЬЗОВАТЬ. Для подключения одних библиотек к другой применяется ключевое слово ИСПОЛЬЗОВАТЬ_БИБЛ.
Другой способ вызвать функцию из библиотеки представляет собой запись в одну строку. В этом случае имя библиотеки указывается в квадратных скобках в виде строкового выражения, а имя вызываемой функции отделяется от него точкой. Это позволяет использовать такие вызовы из описаний графиков и калькулятора, в обработчиках событий.
[<имя библиотеки>].<имя функции>
Внутри каждой библиотеки может содержаться любое количество функций. При использовании одной функции из библиотеки в память загружаются заголовки всех функций этой библиотеки.
Установка папки, в которой располагаются библиотеки, осуществляется в диалоговом окне, вызываемым с помощью закладки Папки пункта меню Установка/Настройки.
Для редактирования библиотек выберите пункт меню Установка/Библиотеки функций.
Последние файлы, открытые с помощью пункта Установка/Библиотеки функций отображаются в пункте Установка/Недавние файлы.
Пример подключения библиотеки
Пусть текст метода содержится в библиотеке Methods.ibl, тогда обращение к этой функции может выглядеть следующим образом:
// считываем в объект Оп восьмую операцию из журнала Оп = ОПЕР_СЧИТАТЬ ( 8 ) // считываем в объект Пр вторую проводку из объекта Оп Пр = Оп.ПРОВ ( 2 ) ИСПОЛЬЗОВАТЬ ("METHODS") // подключение библиотеки Methods.ibl Ц = Пр.ЦенаПров // Получаем цену по проводке Пр
Пусть в библиотеке MyLib.ibl имеется функция Завтра:
ФУНКЦИЯ ТИП_ДАТА: Завтра Завтра = ДАТА_ТЕК + 1 КОНЕЦ_ФУНКЦИИ
Тогда ее можно вызвать следующим образом:
д = ["MYLIB"].Завтра // переменная д получает завтрашнюю дату
Эта запись эквивалентна:
ИСПОЛЬЗОВАТЬ ("MYLIB") д = Завтра
Опции библиотеки
Различные опции обработки файла библиотеки задаются специальном диалоговом окне:
Режим | ||
компилятор и интерпретатор | Нет ограничений на режим использования библиотеки. По умолчанию. | |
только компилятор | Следует устанавливать для библиотек, разработанных для режима компилятора. Например, содержащих константы в области определений или использующих в функциях возможности, не поддерживаемые интерпретатором. | |
только интерпретатор | Следует устанавливать для библиотек, разработанных для режима интерпретатора. Например, использующих особенности представления индексных переменных в интерпретаторе. | |
запрет | Любое использование библиотеки будет приводить к ошибке. Может применяться для устаревших версий библиотек. | |
Мусор в определении библиотеки | ||
строгая проверка (рекомендуется) | Компилятор не допускает постороннего текста вне комментария после определений общих переменных и функций. Рекомедуется к установке для всех сопровождаемых разработчиком библиотек. | |
генерировать предупреждения | Компилятор информирует о наличии постороннего текста вне комментария в области определений библиотеки в виде предупреждений. Может применяться в переходный период для массового выявления мусора. | |
игнорировать | Компилятор молча пропускает посторонний текст в области определений библиотеки. По умолчанию. Имеет смысл для брошенных библиотек, дальнейшее сопровождение которых не планируется. | |
Запрет подключения через ИСПОЛЬЗОВАТЬ_БИБЛ | Выкл. по умолчанию. | Позволяет запретить подключения библиотек, содержащих большое количество общих переменных или функций со слишком простыми именами. Подключение библиотеки остается разрешенным с помощью ключевого слова ИСПОЛЬЗОВАТЬ внутри формульного раздела или функции. |
Запрет определения типовых операций | Выкл. по умолчанию. | Позволяет запретить практику определения типовых операций и диалогов в файле библиотеки. Определение типовых операций в файлах библиотек является рискованной практикой с трудно прогнозируемыми побочными эффектами. Ее следует избегать, т.к. структура файлов IBL и TOP различна, в программе за чтение одной и другой синтаксической структуры отвечают разные функции. |
Создавать закрытую библиотеку | Выкл. по умолчанию. | Позволяет отметить библиотеку для создания соответствующего файл закрытой бмиблиотеки (ICL). Создание всех закрытых библиотек выполняет пункт Установка/Компилятор/Создать закрытые библиотеки Главного меню. |
Кодировка | ||
DOS 866 | Кодировка OEM cp866 (DOS). По умолчанию. | |
Windows ANSI | Кодировка ANSI cp1251. Может применяться для сохранения в тексте библиотеки национальных символов. При смене кодировки из текстового редактора выдается запрос на преобразование файла. | |
Сохранение опций в файле | Префикс XML-файла. | Определяет имя XML-файла для сохранения опций данной библиотеки. При необходимости такой файл создается. Для переноса опций библиотеки из одного файла в другой достаточно указать новый префикс или выбрать из выпадающего списка один из существующих префиксов. |
Опции для каждой библиотеки сохраняются в файлах *_METAINF.XML в папке библиотек.
Для группового указания опций файлам библиотек можно воспользоваться пунктом Установка/Компилятор/Опции библиотек... Главного меню. При изменении параметра "кодировка" в групповом режиме сами файлы библиотек не изменяются!
Закрытые библиотеки
Закрытые (зашифрованные) библиотеки (*.icl) могут использоваться при компиляции бланков, типовых операций и т.п. без наличия соответствующих библиотек исходного кода (*.ibl). В режиме интерпретатора использование закрытых библиотек не поддерживается.
ИСПОЛЬЗОВАТЬ("SECRET.IBL")
В этом примере компилятор сначала ищет файл secret.ibl, если такой не найден, то secret.iсl. Из этого следует, что разработчик может не публиковать файл secret.ibl, а вместо него поставлять пользователям файл secret.iсl. При этом пользователи не теряют возможность выполнить перекомпиляцию зависимых от библиотеки secret программ на внутреннем языке (например, когда меняются другие библиотеки).
Для создания закрытой библиотеки необходимо из редактора библиотек выбрать пункт Файлы/Сохранить как... Главного меню и далее в выпадающем меню Тип файла выбрать пункт Закрытые библиотеки.
При внесении изменений в открытую библиотеку функций (*.ibl), соответствующую некоторой закрытой библиотеке (*.icl), внесенные изменения не отражаются автоматически в закрытой библиотеке. Для синхронизации всех закрытых библиотек функций, расположенных в папке библиотек, с соответствующими им открытыми библиотеками необходимо выбрать пункт Установка/Компилятор/Синхронизация библиотек Главного меню.
При организации взаимодействия закрытых библиотек между собой имеет смысл определять скрытые функции с секретными именами. Это поможет предотвратить подмену злоумышленником закрытой библиотеки открытой библиотекой-заглушкой.