Проект расширенных функций форматирования для Ирбис64
EX64
SVN-репозитарий: [
exs64.svn.sourceforge.net]
Авторизация: та же, что для учетной записи SourceForge из первого сообщения
Как подключить: в архиве файл ex64.dll, который нужно положить в директорию сервера и рядом с клиентскими АРМами.
Как использовать: &uf('+8ex64,<имя функции>,<данные>')
2010-09-04: реализованы функции trim, file_exist, file_size
Ссылка: [
sourceforge.net]
Пример использования:
&uf('+8ex64,trim, пробелы в начале и конце ') >пробелы в начале и конце
&uf('+8ex64,file_exist,c:\boot.ini') >1
&uf('+8ex64,file_size,c:\boot.ini') >214
2010-12-19: реализована функция преобразования суммы числом в сумму прописью
Ссылка: [
sourceforge.net]
Пример использования:
&uf('+8ex64,summ_to_string,26432.32') >двадцать шесть тысяч четыреста тридцать два рубля 32 копейки
Пояснение: не стал реализовывать форматом, потому что получилось бы слишком громоздко и ресурсоёмко.
2010-12-24: реализована функция получения даты модификации файла. Результат в формате ГГГГММДДЧЧННСС
Ссылка: [
sourceforge.net]
Пример использования:
&uf('+8ex64,file_mdate,c:\image.jpg') >20100107100914
Примечание: функции получения даты создания и даты последнего доступа не сделал, поскольку они, оказывается, Windows-based. Получить из в среде Lazarus не получилось. Думаю, что даты модификации вполне хватит.
2011-08-14: реализована функция получения хэша MD5 от строки. Результат в нижнем регистре 32 символа
Ссылка: [
sourceforge.net]
Пример использования:
&uf('+8ex64,md5_string,password') >5f4dcc3b5aa765d61d8327deb882cf99
2011-09-15: реализована функция split, разбивающая строки на части. Если передана одна строка, то она считается разбиваемой и делится с использованием регулярного выражения [\.,;], т.е. разделителями будут являться точка, запятая и точка с запятой. Если же в качестве аргумента передано несколько строк, то первая считается регулярным выражением, которое определяет разделитель. Все остальные строки разбиваются последовательно этим регулярным выражением и на выходе функция возвращает результат разделения так же построчно. Каждый фрагмент на отдельной строке.
Ссылка: [
sourceforge.net]
Пример использования:
&uf('+8ex64,split,,'/'Привет, Гость.'/'Ты все еще не любишь Ирбис, а?'/'тогда мы идем к тебе!') >
Привет
Гость.
Ты все еще не любишь Ирбис
а?
тогда мы идем к тебе!
Пробелы в начале и конце строк нужно либо исключать, используя trim, либо писать более сложное регулярное выражением (что предпочтительнее). Т.е. переписав регулярное выражение из примера так
&uf('+8ex64,split,(, |,)'/'Привет, Гость.'/'Ты все еще не любишь Ирбис, а?'/'тогда вы идем к тебе!')
Мы получим результат без пробелов в начале строк.
2011-12-13: реализованы функции count и length. Count считает количество строк, переданных во входном параметре. Length выдает количество символов в строке. При этом поддерживается многострочный ввод. Т.е. если в length передано 3 строки, то ответом будет три строки, в каждой из которых будет находиться длина соответствующей строки.
Ссылка: [
sourceforge.net]
Пример использования:
&uf('+8ex64,count,первая'/'вторая'/'третья') >3
&uf('+8ex64,length,первая'/'вторая строка'/'третья строчка') >12
25
27
2011-12-17: реализованы функции load, save и app_path. Load читает файл по пути, указанном в параметре построчко и возвращает в ответ. Если в начале пути находится символ !, то считается, что файл в кодировке ANSI и он перед выводом преобразовывается в UTF-8. Save сохраняет переданные строки в файл, имя которого указано в первой строке. Так же если в имени файла первый символ !, тогда все строки перед сохранением преобразовываются из UTF-8 в ANSI. Save возвращает 0 если файл не найден после сохранения (произошла какая-то ошибка) или 1, если файл найден. App_path возвращает путь (с закрывающим обратным слешем), в котором находится исполняемое приложение. Обычно это рабочая директория сервера, если формат выполняется на стороне сервера.
Ссылка: [
sourceforge.net]
Пример использования:
&uf('+8ex64,load,!.\DATAI\Deposit\di.mnu') >1
Инверсия фамилии и инициалов не допускается
2
Число слов в фамилии (откорректировать число)
*****
&uf('+8ex64,save,!.\mymnu.mnu'#'value'#'Описание валуя'#'*****'#) >1
&uf('+8ex64,app_path') >d:\irbis64_server\IRBIS64\
2012-02-11: функция split возвращала строки закавычеными. Исправлено. Функция trim теперь умеет работать с набором строк, как и split.
Ссылка: [
sourceforge.net]
2012-02-22: Добавлена функция uri2file. функция принимает данные, зашифрованные URI (%FF) и сохраняет их в расшифрованном виде в файл. Путь сохранения файла указывается в
первой строке входных данных. Если путь пустой, то используется путь .\autosave\<YYYYMMDD>\, который будет отсчитан от корневой директории сервера ИРБИС64.
Второй строкой идет имя файла. Имя может быть задано маской:
MD5 - MD5-хэш зашифрованных данных (32 символа)
YYYY - текущий год (4 цифры)
MM - номер текущего месяца (2 цифры)
DD - текущий день месяца (2 цифры)
HH - текущий час (2 цифры)
NN - текущие минуты (2 цифры)
SS - текущие секунды (2 цифры)
В
третьей строке указывается путь, который будет добавлен к имени сохраненного файла.
Четвертая строка - метки подполей, в которых нужно вернуть сведения о сохраненном файле. Если строка пустая, тогда функция возвращает путь до файла без каких-либо меток. Строка может содержать до 3 символов. 1й символ - метка подполя для имени файла (по умолчанию i), 2й символ - метка подполя для размера файла в байтах (по умолчанию s), 3й символ - дата последней модификации файла в формате ГГГГММДДЧЧННСС (по умолчанию d). Если в позиции символа стоит пробел, берется метка по умолчанию. Если в позиции символа указан - (минус), соответствующие данные не возвращаются.
Пятая строка - непосредственно URI-шифрованная строка, которую нужно расшифровать и сохранить в файл.
Самое разумное использование - в операции автоввода. Если имеются данные, прикрепляемые к записи подобным методом (метод ввода 12 с параметром 3), тогда мы может сохранить файл любого размера на сервере в доступную для веба (к примеру) папку, а в запись сохранить только публичную ссылку на ресурс. При этом сотрудник может не заботиться о том, куда файл сохраняется и не запоминать публичные (а иногда очень длинные) пути на файлы.
Ссылка: [
sourceforge.net]
Пример использования:
Содержимое поля 10000 в прикрепленном файле
&uf('+8ex64,uri2file,d:\files\'#'md5.'v10000^a#'http://localhost/files/'#' -t'#v10000^b)
>^ihttp://localhost/files/d6da56fa854103f20e05a87ee20c7a8f.jpg^t20120222122700
Редактировано 19 раз. Последний раз 22.02.2012 13:01 пользователем Панев Максим.