- •1.Назначение
- •2.История
- •3.Ядро программы
- •4.Установка
- •5.Экспортируемые функции dll и рекомендации по их использованию
- •5.1.Общие положения
- •5.2.Функции, выполняющие склонение фио, должностей и подразделений
- •5.3.Сервисные функции
- •5.4.Функции, работающие со словарем исключений
- •5.5.Представление чисел (сумм) прописью, склонениe числительных и валют.
- •5.5.3.Справочник валют
- •6.Примеры обращения к функциям Библиотеки
- •7.Сервер автоматизации
- •7.1.Краткое описание
- •7.2.Примеры обращения
- •7.2.1.Delphi (проект SampleCom)
- •8.Восстановление именительного падежа
- •9.Словарь исключений
- •10.Область применения
- •11.Правила склонения фио, реализованные в Библиотеке
- •12.Комплект поставки
- •12.1.Версии до 3.Х
- •12.2.Версия 4.X
- •12.3.Условия поставки
- •13.Литература
- •14.Благодарности
- •15.Заключение
7.Сервер автоматизации
7.1.Краткое описание
Сервер автоматизации (ClassName – Declension) содержит все те же функции оформленные в как методы интефейса, в которых отсуствуют паразитные параметры (pResult и nLen) и преобразования возвращаются как результат функций.
Большинство методов сервера автоматизации реализовано в виде функций у которых типом входных строковых данных и типом результата является тип WideString. Таким же типом передается в метод информация о роде в виде одного из символов: ‘’ (пустая строка), ‘м’ или ‘ж’ (в любом регистре). Передача в качестве параметра рода пустой строки означает требование выполнить автоматическое определение рода перед преобразованием. Если род определить невозможно (выполняется попытка склонять фамилию с инициалами, «китайского» типа или входные данные имеют формат "Фамилия Имя [Имя]") метод возвращает исходные данные без изменения. Аналогично и при указании явно ошибочного рода. Имена методов совпадают с именами соответствующих экспортируемых функций.
При некорректном задании падежа или рода генерируется исключение EOleException. Значение поля ErrorCode в этом случае равно -1 для неверного падежа и -2 – для неверного рода. Поле Message содержит описание ошибки с указанием значения неверного параметра.
Кроме того, сервер имеет свойство Dictionary, являющееся, в свою очередь, сервером и предоставляющим доступ к своему методу Update и свойству FileName, так же имеющему тип WideString. Свойство FileName доступно как по чтению, так и по записи. Это позволяет не только получить имя словаря исключений в приложении для выполнения некоторых действий с ним, но и устанавливать словарь в процессе работы приложения.3
Следует обратить внимание, что объекта Dictionary начиная с версии 4 в сервере автоматизации не существует, для упрощения три его функции по работе со словарем исключений перенесены в объекте Declension.
Ниже приводится список методов сервера автоматизации с перечислением параметров и их типов.
Declension:
// определение пола
function GetSex(const cMiddleName: WideString): Integer; stdcall;
// функции склонения
function GetFIOPadegFS(const cFIO, cSex: WideString; nPadeg: Integer): WideString; safecall;
procedure SeparateFIO(const cFIO: WideString; out cLastName, cFirstName, cMiddleName: WideString); safecall;
function GetFIOPadeg(const cLastName, cFirstName, cMiddleName, cSex: WideString; nPadeg: Integer): WideString; safecall;
function GetIFPadeg(const cFirstName, cLastName, cSex: WideString; nPadeg: Integer): WideString; safecall;
function GetIFPadegFS(const cIF, cSex: WideString; nPadeg: Integer): WideString; safecall;
function GetNominativePadeg(const cFIO: WideString): WideString; safecall;
function GetAppointmentPadeg(const cAppointment: WideString; nPadeg: Integer): WideString; safecall;
function GetOfficePadeg(const cOffice: WideString; nPadeg: Integer): WideString; safecall;
function GetFullAppointmentPadeg(const cAppointment, cOffice: WideString; nPadeg: Integer): WideString; safecall;
// работа со словарем исключений
function SetDictionary(const DicName: WideString): WordBool; safecall;
function Update_Exceptions: WordBool; safecall;
function GetExceptionsFileName: WideString; safecall;
function NumberToString(Quantity: Double; iSex, Decimal: Integer; RemoveZero, CnvtFrac: WordBool): WideString; safecall;
// преобразование и склонение числительных
function DoubleToVerbal(Quantity: Double): WideString; safecall;
function DeclNumeral(const Value: WideString; nPadeg, iSex: Integer; Order, Soul: WordBool): WideString; safecall;
function DeclCurrency(Quantity: Currency; const CurrName: WideString; nPadeg, Forms: Integer): WideString; safecall;
function SumInWords(const Quantity: WideString; iSex, Decimal: Integer; RemoveZero, CnvtFrac: WordBool): WideString; safecall;
Все сказанное выше в отношении экспортируемых функций в части их работы и особенностей остается справедливым и для методов сервера. Естественно, с учетом того, что типы некоторых параметров методов и возвращаемых ими значений стали другими.
Хотя Библиотека с СOM сервером и содержит стандартные вызовы функций (не важно какую компоновку вы применяете, статическую или динамическую) авторы настоятельно рекомендуют не смешивать в одном приложении стандартные вызовы и COM обращения, следует применять либо одно, либо другое. Связано это с реализацией загрузки и выгрузки DLL операционной системой Windows.
