DLL для контроля кумуляции номеров
Пользователь:
amironov73 (IP-адрес скрыт)
Дата: 11, February, 2013 12:08
Предлагается небольшая динамическая библиотечка (DLL), подключаемая через &unifor('+8') и позволяющая упростить контроль кумуляции номеров журналов/газет. По сути она представляет собой набор операций над множествами натуральных чисел: сложение, перемножение (пересечение), вычитание (исключение) и обратное вычитание.
DLL содержит четыре экспортированные функции, каждая из которых представляет собой одну из вышеперечисленных операций:
* union – сложение. Результатом являются элементы, входящие хотя бы в одно из двух множеств.
Пример: &uf('+8iogunb,union,1,2|3,4')
Результат: 1-4
* intersect – умножение (пересечение). Результатом являются элементы, входящие в оба множества одновременно.
Пример: &uf('+8iogunb,intersect,1,2,3|2,3,4')
Результат: 2,3
* exclude – вычитание (исключение). Результатом являются элементы, входящие в первое множество, но не входящие во второе.
Пример: &uf('+8iogunb,exclude ,1-4|1,4')
Результат: 2,3
* missing – обратное вычитание. Результатом являются элементы, входящие во второе множество, но не входящие в первое.
Пример: &uf('+8iogunb,missing,1-100,105-200,203-360,201/202|1-365')
Результат: 101-104,361-365
Последняя операция позволяет автоматизировать контроль кумуляции номеров журналов за определенный год.
Как видно из примеров, запись множеств интуитивно понятна и соответствует соглашениям ИРБИС: значения перечисляются через запятую (в произвольном порядке) или указываются в виде диапазонов «от-до (включая)» (можно также через косую черту). Повторяющиеся значения игнорируются. Пробелы и нечисловые символы также игнорируются (Например, «1, 2спец, 3» эквивалентно «1,2,3»). Одно множество от другого отделяется вертикальной чертой.
Результат выдается в формате, совместимом с ИРБИС. Пустое множество выводится как пустая строка (из нуля символов).
DLL предназначена для ИРБИС64. Работоспособность DLL под ИРБИС32 не проверялась.
В прилагаемом архиве, кроме собственно исполняемого файла DLL, содержится проект для Delphi 7, который позволяет скомпилировать библиотеку самостоятельно.
Вложения:
iogunb.zip (53.1KB)