Скачать MetaTrader 5

Новая статья: Работаем с ZIP-архивами средствами MQL5 без использования сторонних библиотек

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Ваш брокер не поддерживает мобильные MetaTrader 5? Попроси приобрести их!
MetaQuotes Software Corp.
Модератор
181332
MetaQuotes Software Corp. 2015.09.23 09:14 

На mql5.com опубликована статья Работаем с ZIP-архивами средствами MQL5 без использования сторонних библиотек:

Язык MQL5 развивается, и в него постоянно добавляются новые функции для работы с данными. С некоторых пор, благодаря нововведениям, стало возможно работать с ZIP-архивами штатными средствами MQL5 без привлечения сторонних библиотек DLL. Данная статья подробно описывает, как это делается, на примере описания класса CZip — универсального инструмента для чтения, создания и модификации ZIP-архивов.

Однажды автора данной статьи привлекла интересная особенность функции CryptDecode, а именно — возможность распаковывать переданный ей ZIP-массив. Этот модификатор был введен разработчиками торговой платформы MetaTrader 5 для того, чтобы можно было распаковывать ответ некоторых серверов, используя стандартную функцию WebRequest. Однако из-за некоторых особенностей формата ZIP-файла, использовать ее напрямую было невозможно.

Требовалась дополнительная аутентификация: для распаковки архива необходимо знать его хеш-сумму до упаковки: Adler-32, которой, естественно, не было. Однако, при обсуждении этой проблемы, разработчики пошли навстречу и перегрузили CryptDecode и CryptEncode, ее зеркального близнеца, специальным флагом, игнорирующим хеш Adler32 при распаковке переданных данных. Для неискушенных в техническом плане пользователей это нововведение можно объяснить просто: благодаря ему стала возможной полнофункциональная работа с ZIP-архивами. Эта статья подробно описывает формат ZIP-файла, особенности хранения данных в нем и предлагает для работы с архивом удобный объектно-ориентированный класс CZip.

Каждый ZIP-архив — это бинарный файл, содержащий упорядоченную последовательность байтов. С другой стороны, в ZIP-архиве каждый файл имеет имя, атрибуты (например время модификации файла) и другие свойства, которые мы привыкли видеть в файловой системе любой операционной системы. Поэтому, помимо запакованных данных, каждый ZIP-архив хранит имя запакованного файла, его атрибуты и другую служебную информацию. Эта служебная информация располагается в строго определенном порядке и имеет регулярную структуру. Например, если в архиве содержатся два файла (File#1 и File#2), то архив будет иметь следующую схему:


Рис. 1. Схематичное представление ZIP-архива, содержащего два файла: File#1 и File#2

Автор: Vasiliy Sokolov

hrenfx
3672
hrenfx 2015.09.24 06:44  

Спасибо, обязательно прикручу к сборщику данных.

В конце статьи в примере в архив попадает сообщение "test."  (на конце не нужная точка).

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий