ВК для работы с файлами FilesNative.dll

Компонента реализует некоторые методы работы с файлами (архивами).
Поддерживаемые форматы распаковки архивов:
ZIP, JAR, XPI, BZ2, BZIP2, TBZ2,TBZ,RAR, R00, ARJ, Z, TAZ, LZH, LHA, 7Z, CAB, LZMA, LZMA86, ISO, XAR, MSI,RPM, TAR, GZ, TGZ, TPZ

Компонента выполнена по технологии Native, не требует регистрации в реестре и, соответственно, особых прав пользователя.
Компонента реализует некоторые методы работы с файлами (архивами).
Поддерживаемые форматы распаковки архивов:
ZIP, JAR, XPI, BZ2, BZIP2, TBZ2,TBZ,RAR, R00, ARJ, Z, TAZ, LZH, LHA,
7Z, CAB, LZMA, LZMA86, ISO, XAR, MSI,RPM, TAR, GZ, TGZ, TPZЗагрузка компоненты (пример загрузки в модуле обычного приложения)

Перем Файлы Экспорт;

Функция КаталогИБ() Экспорт
КаталогИБ = СтрокаСоединенияИнформационнойБазы();
КаталогИБ = Сред(КаталогИБ,7,СтрДлина(КаталогИБ)-8) + "";
Возврат КаталогИБ;
КонецФункции

Процедура ПриНачалеРаботыСистемы()
ФайлВК=КаталогИБ()+"FilesNative.dll";
ПодключитьВнешнююКомпоненту(ФайлВК,"FilesNative",AddInType.Native);
Файлы = Новый("AddIn.FilesNative.Files"); // переменная класса
КонецПроцедуры

Методы компоненты (класса Files):

РаспаковатьАрхив(ПолноеИмяАрхивногоФайла,ПапкаКуда)

Распаковывает указанный архивный файл в указанную папку.
Распаковка ведется «до последнего», т.е. если внутри архивного файла
содержатся другие архивные файлы такого же или другого формата (а внутри их, возможно, и ещё),
в указанную папку распакуется всё.
ПапкаКуда — необязательный, по умолчанию = «c: emp»
Если указанная папка не существет, она будет создана.

Пример:

Архив="c:СервисМTESTTTT.RAR";
ПапкаКуда="c:555";
Файлы.РаспаковатьАрхив(Архив,ПапкаКуда);

УпаковатьПапку(ПолноеИмяПапки,ПолноеИмяФайлаРезультата,Тип);
Упаковывает указанную папку со всем содержимым в архивный файл формата 7Z или ZIP
Тип — строка вида «.7Z» или «.ZIP», необязательный, по умолчанию = «.7Z»
Пример:

Папка="c:СервисМTaxi";
Тип=".7Z";
ФайлРезультат="c:Taxi"+Тип;
Файлы.УпаковатьПапку(Папка,ФайлРезультат,Тип);

УпаковатьФайл(ПолноеИмяФайла,ПолноеИмяФайлаРезультата,Тип)
Практически аналогичен предыдущему, но для отдельного файла.
Пример:

Тип=".7Z";
Файл="c:СервисМ1Cv8.1CD";
ФайлРезультат="c:1Cv8_1CD"+Тип;
Файлы.УпаковатьФайл(Файл,ФайлРезультат,Тип)

ШифроватьФайл(ПолноеИмяИсходногоФайла,ПолноеИмяШифрованногоФайла,Пароль)
Шифрует указанный файл побайтно и создает результирущий зашифрованный файл.
Пароль — строка, необязательный, по умолчанию внутренний пароль компоненты.

Пример:

Пароль="{EC8F1BED-19BB-401B-B448-8EF2150C6FF4}";
ФайлИсх="c:СервисМПоддерживаемые форматы.txt";
ФайлШифр="c:СервисМПоддерживаемые форматы_шифр.txt";
Файлы.ШифроватьФайл(ФайлИсх,ФайлШифр,Пароль);

ДешифроватьФайл(ПолноеИмяИсходногоФайла,ПолноеИмяДешифрованногоФайла,Пароль)
Противоположен предыдущему.
Пример:

Пароль="{EC8F1BED-19BB-401B-B448-8EF2150C6FF4}";
ФайлШифр="c:СервисМПоддерживаемые форматы_шифр.txt";
ФайлДеШифр="c:СервисМПоддерживаемые форматы_дешифр.txt";
Файлы.ДешифроватьФайл(ФайлШифр,ФайлДеШифр,Пароль);

MD5(ПолноеИмяФайла)
Подсчитывает MD5-хеш содержимого указанного файла.
(удобно для отслеживания факта изменения)
Пример:

MD5=Файлы.MD5("c:СервисМNativeFilesFilesNative.dll");

ВерсияФайла(ПолноеИмяФайла)
Возвращает строку вида Версия;Производитель;ДатаВремяФайла,
например: 1.0.0.3;Сервис-М;18.06.2014 11:42:20
Пример:

Версия=Файлы.ВерсияФайла("c:СервисМNativeFilesFilesNative.dll");

Примечание: только для файлов exe и dll.

GUID() — без параметров, возвращает сгенерированную строку GUID,
например: {8435EA89-6585-4F86-8C12-6E9556638C97}
Удобно для генерации случайных строк.
Пример:

Сообщить(Файлы.GUID());

ВАЖНО:
для работы компоненты необходимо наличие в системе (или в каталоге компоненты)
файла 7z.dll (прилагается)

Содержимое архива: Описание.txt, 7z.dll и FilesNative.dll
(текущая версия 1.0.0.3)

© Кучер А.А. Красноярск, 2014

8 Comments

  1. asved.ru
    GUID() — без параметров, возвращает сгенерированную строку GUID

    Новый УникальныйИдентификатор()

    да и вообще, многое из описанного легко и непринужденно делается стандартными средствами.

    Reply
  2. Abadonna

    (1) asved.ru,

    многое из описанного легко и непринужденно делается стандартными средствами.

    Примерчик в студию, кроме Новый УникальныйИдентификатор()

    Например, распаковка архивов, кроме формата ZIP? Или MD5? Или производитель и версия из Файл=Новый Файл(БлаБла)?

    Reply
  3. Yashazz

    (2) Насчёт MD5 вроде в 8.3 есть, или скоро обещали.

    В целом вещь полезная однозначно. Мне пока совершенно не нужно, тем не менее заранее спасибо и плюс.

    (1) Не факт, кстати, что UUID от 1С это действительно настоящий GUID. Были, помнится, публикации на эту тему…

    Reply
  4. Abadonna

    (3) Yashazz, ага, MD5 таки появилась в 8.3. Хрен за ними уследишь ;)))

    Reply
  5. EmpireSer

    (3) Yashazz,

    Новый УникальныйИдентификатор() возвращает такой же GUID, как и Windows.

    А вот хранение в базе, т.е. идентификатор под «_Ref», формируется уже по другому. Именно он отображается, когда объект не находится.

    (0)

    А попробуй использовать 7z как кросс-платформенный (что бы не зависит от dll).

    LZMA SDK и к примеру вот тут 7-Zip-JBinding 7z у них получился кросс-платформенным и много что поддерживает.

    Reply
  6. BorovikSV

    (4) MD5 вроде как уже давно в 8.3. С момента выхода ознакомительной 🙂

    Reply
  7. BorovikSV

    (0) ты же дельфист. А для него есть вполне full source библиотека. Иначе просто так компоненту в базу не запихаешь. Придется еще с 7z таскаться.

    Reply
  8. Гость

    В минувшие выходные (14.09.14), на 56-году ушел из жизни Кучер Аркадий (aka Abadonna).

    RIP

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *