feldsher

Автор:tema
Дата:26.07.2016
Просмотров:2632
Скачиваний:661
Оценка:, Оценок - 2
Скачать (zip-файл; Размер - 1977449)

Обсудить в форуме

Описание

flLevenshteinDistance(str1:String, str2:String)
Возвращаемое значение: целое, расстояние Левенштейна между строками str1 и str2.

flUrlCreateFromPath(path:String)
Возвращаемое значение: строка, URL образованный из пути path.

flFormDate(format:String, date:Date)
Переводит дату в строку по заданному формату. При ошибке преобразования даты возвращается значение типа V_UNDEF.
format — строка с форматом, описание см. функцию strftime.
date — дата, если отсутствует, берётся текущее время, функция принимает значения типа Date и DateTime.

flIConv(code_in:String, code_out:String, string:String)
Перекодирует строку string из кодировки code_in в кодировку code_out.
Возвращаемое значение: строка, результат перекодировки.
Из кодировок, которые могут пригодиться, стоит упомянуть CP1251, CP866, UTF-8. Если в качестве кодировки указан null, принимается CP866.
Для работы требуется библиотека iconv. Ограничения на сайте R-Style не позволяют включить требуемые dll в архив. Надо скачать архив http://gnuwin32.sourceforge.net/downlinks/libiconv-bin-zip.php из папки bin извлечь две dll (libiconv2.dll и libcharset1.dll) и подложить их в obj или в путь. Если на машине в пути есть аналогичные, то эти можно не подкладывать.

flStringPrepareToJson(string:String)
Гибридная функция. Подготавливает строку к использованию в JSON формате. Специальные символы экранируются. Кирилица и латиница остются нетронутыми. Остальные символы кодируюся в unicode в JSON формате (\uXXXX). Такая перекодировка рассчитана на то, что строка будет передана средствами RSL в ActiveX объект и в процессе этой передачи произойдёт перекодировка в unicode. Таким образом, в результате этих двух трансформаций получится строка в JSON формате с читаемой кирилицей и экранированными стрёмными символами. Сценарий использования — для ручного сбора JSON. Пример:
adodbRecordSet.Fields.Item("response_json").Value=
"{\"ground\":\""+flStringPrepareToJson(postdoc.rec.Ground)+"\"}";

flSHA256(string:String)
Возвращает строку кодированную в шестнадцатиричном виде со значением хэш-функции по алгоритму SHA256 от входной строки.

flHash(function_name:String, string:String)
Функция возвращает хэш строки string. Алгоритм расчёта хэшфункции задаётся параметром function_name. Допустимые значения: blake2b512, blake2s256, md4, md5, mdc2, rmd160, sha1, sha224, sha256, sha3-224, sha3-256, sha3-384, sha3-512, sha384, sha512, sha512-224, sha512-256, shake128, shake256, sm3. Если в качестве первого параметра передан null, то используется md5. Для работы необходима библиотека libcrypto от openssl.

flUrlDecode(string:String)
Раскодирует строку string, закодированную URL encode, также преобразует из UTF8 в CP866.
Возвращаемое значение: строка, результат перекодировки.

flMemSpeedTest(size:Integer, count:Integer, block_size):Double
Замеряет скорость записи в оперативную память. Возвращает мегабайты в секунду в формате с плавающей запятой.
Параметры:
size — размер в байтах, по умолчанию 1Gb.
count — кол-во повторов, по умолчанию 3.
block_size — если указано и больше 0, то используется копирование из предварительного подготовленного блока размером block_size через memcpy.

Текст примера

 import feldsher;
var r, s1, s2;
s1="Левенштейн";
s2="Лихтенштайн";

r=flLevenshteinDistance(s1,s2);
PrintLn(s1+"-"+s2+"="+r);

s1="c:\\Пользователи\\Мои документы\\e-book.xlsx";
s2=flUrlCreateFromPath(s1);
PrintLn(s1,"->",s2);

PrintLn(flFormDate());
PrintLn(flFormDate("%Y%d%m %A"));
PrintLn(flFormDate("%Y%d%m %A",date(31,12,1998)));

PrintLn(flIConv("CP866","CP866","Рюский тэкст"));
PrintLn(flIConv(null,null,"Рюский тэкст"));
PrintLn(flIConv("CP866","UTF-8","Рюский тэкст"));
PrintLn(flIConv(null,"CP1251","Рюский тэкст"));
PrintLn(flIConv("UTF-8","CP866","╨Я╤А╨╕╨▓╨╡╤В, ╤П ╤Б╤В╤А╨╛╨║╨░ ╨▒╤Л╨▓╤И╨░╤П ╨▓ ╨║╨╛╨┤╨╕╤А╨╛╨▓╨║╨╡ utf-8"));
PrintLn(flIConv("UTF-8","CP866",null));

PrintLn(flStringPrepareToJson("строка\nещё строка\ttab\rRRR────\x01\x02\x03"));

PrintLn(flSHA256("abc")); 

PrintLn(flHash("sha256","abc"));