Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пользуйся поиском на MQL5.community. Это просто!
Vasiliy Sokolov
21642
Vasiliy Sokolov 2015.03.28 15:00 

Собственно вопрос в сабже. Как понимаю, речь идет именно об упаковке/распаковке zip массива. Это мегаполезная штука, вот только у меня не получилось ее использовать, функция CryptDecode упорно выдает ноль на тестовом zip архиве:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   uchar array[];
   uchar key[]={0};
   uchar result[];
   int handle = FileOpen("link.zip", FILE_READ|FILE_BIN|FILE_COMMON);
   FileReadArray(handle, array);
   FileClose(handle);
   int d = CryptDecode(CRYPT_ARCH_ZIP, array, key, result);
   printf(GetLastError());
   printf("Read totals: " + (string)ArraySize(array));
  }

Возможно что-то другое надо указать в качестве ключа, или я не правильно понимаю значение модификатора CRYPT_ARCH_ZIP. В любом случае, в документации нет примера работы с функцией, что существенно осложняет ее понимание работы. Функция GetLastError пишет 4001 - Неожиданная внутренняя ошибка.

Alexandr Bryzgalov
27307
Alexandr Bryzgalov 2015.03.28 15:13  
C-4:

Собственно вопрос в сабже. Как понимаю, речь идет именно об упаковке/распаковке zip массива. Это мегаполезная штука, вот только у меня не получилось ее использовать, функция CryptDecode упорно выдает ноль на тестовом zip архиве:

Возможно что-то другое надо указать в качестве ключа, или я не правильно понимаю значение модификатора CRYPT_ARCH_ZIP. В любом случае, в документации нет примера работы с функцией, что существенно осложняет ее понимание работы. Функция GetLastError пишет 4001 - Неожиданная внутренняя ошибка.

не верный подход
Vasiliy Sokolov
21642
Vasiliy Sokolov 2015.03.28 15:14  
sanyooooook:
не верный подход
Подробней если можно.
Alexandr Bryzgalov
27307
Alexandr Bryzgalov 2015.03.28 15:15  

ZIP-архив эта целая структура, функция же архивирует\разархивирует массив, т.е. сувать туда нужно только готовый для деархивации массив.

грубо говоря, разархивирует только то, что получается на выходе архивирующей функции.

Alexandr Bryzgalov
27307
Alexandr Bryzgalov 2015.03.28 15:19  
C-4:
Подробней если можно.
или то что в
link.zip
было создано функцией архивации?
Vasiliy Sokolov
21642
Vasiliy Sokolov 2015.03.28 15:21  
sanyooooook:

ZIP-архив эта целая структура, функция же архивирует\разархивирует массив, т.е. сувать туда нужно только готовый для деархивации массив.

грубо говоря, разархивирует только то, что получается на выходе архивирующей функции.

Понятно. В стиле MQ. Хотя главное есть - дешифровка zip'а. Не у кого нет случайно библиотеки по работе с zip-архивами на MQL?
Vasiliy Sokolov
21642
Vasiliy Sokolov 2015.03.28 15:23  
sanyooooook:
или то что в
было создано функцией архивации?
Не, пишет ноль. CryptDecode декодирует zip. Пробовал создавать zip архив - ответы CryptEncode с штатными архиваторами не совпадают. У CryptEncode заархивированный файл получается гораздо короче, что косвенно подтверждает, твою теорию!
Alexandr Bryzgalov
27307
Alexandr Bryzgalov 2015.03.28 15:24  
вот описание структуры файла http://blog2k.ru/archives/3391
Описание формата ZIP файла
  • 2014.05.29
  • Евгений Жирнов (jirnov@gmail.com)
  • blog2k.ru
ZIP файл состоит из трех областей: сжатые/несжатые данные, (последовательность структур Local File Header, сами данные и необязательных Data descriptor)центральный каталог (последовательность структур Central directory file header)описание центрального каталога (End of central directory record) С начала файла идет набор из Local File Header...
Alexandr Bryzgalov
27307
Alexandr Bryzgalov 2015.03.28 15:26  
C-4:
Не, пишет ноль. CryptDecode декодирует zip. Пробовал создавать zip архив - ответы CryptEncode с штатными архиваторами не совпадают. У CryptEncode заархивированный файл получается гораздо короче, что косвенно подтверждает, твою теорию!

это не теория это так и есть, просто привыкли что в архиваторе всё готовое,

я тоже с дуру подумал что разархивирует файлы сделанные нормальным архиватором.

Vasiliy Sokolov
21642
Vasiliy Sokolov 2015.03.28 15:34  

Проблема в том, что я не нахожу вхождений байт-массива выданного CryptEncode в обысном zip архиве.

 

Файл один и тотже. Значит в классическом zip архиве, должен быть участок соответсвующий байт-коду выданному функцией CryptEncode 

Alexandr Bryzgalov
27307
Alexandr Bryzgalov 2015.03.28 15:37  
C-4:

Проблема в том, что я не нахожу вхождений байт-массива выданного CryptEncode в обысном zip архиве.

 

), значит не так ищешь.
/ /12345678...10
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий