Новая версия платформы MetaTrader 5 build 5100: Переход на Git и хаб разработчиков MQL5 Algo Forge, темная тема и улучшения интерфейса - страница 16

 
b5057, в ME не работают ALT+G и ALT+M. Невозможно работать.
 
Forester #:
WebRequest и CryptDecode работают с 1 байтовыми элементами. Хотелось бы прямой связи между ними. А не через копирование 1 Гб однобайтовых данных в 1 Гб однобайтовых данных ради прохождения проверки типа в компиляторе. 

Такой костыль.

void OnStart()
{
  char   post[];           // массив тела HTTP-сообщения 
  char   data[];           // массив с данными ответа сервера (WebRequest)
  string result_headers;   // заголовки ответа сервера 

  WebRequest(NULL, NULL, NULL, 0, post, data, result_headers);

  uchar key[];             // ключ шифрования 
  uchar result[];          // массив-приемник 
  uchar data2[];           // массив-источник (CryptDecode)
  
  ArraySwap(data, data2);
  CryptDecode(CRYPT_ARCH_ZIP, data2, key, result);
}
Forester #:

Просьба сделать перегрузку WebRequest с uchar или CryptDecode с char. Чтобы рабочие коды не перестали работать.

Не вижу потенциальных проблем, если такие перегрузки будут добавлены. Поддерживаю. ZIP-библиотеку пришлось править.

Обсуждение статьи "Работаем с ZIP-архивами средствами MQL5 без использования сторонних библиотек"
Обсуждение статьи "Работаем с ZIP-архивами средствами MQL5 без использования сторонних библиотек"
  • 2025.05.31
  • Forester
  • www.mql5.com
Этот модификатор был введен разработчиками торговой платформы MetaTrader 5 для того, чтобы можно было распаковывать ответ некоторых серверов, используя стандартную функцию WebRequest.
 
fxsaber #:
b5057, в ME не работают ALT+G и ALT+M. Невозможно работать.

Проверил, <Alt+G> работает. И тот-же файл, и другой файл.

<Alt+M> работает тоже.
 
Nikolai Semko #:
Ну тогда воспользуйтесь union

Никогда не пользовался. По сути это происходило само собой 20 лет существования МТ.
Теперь надо вносить значительные правки для взаимодействия 2-х функций работающих с 1-байтовыми данными, которые раньше хорошо взаимодейстововали и теперь перестанут.

Можно пример кода union для динамических массивов?
Как полученый из WebRequest char[] перeдать в CryptDecode , который принимает uchar[]? Я не представляю как это сделать... Нам в любом случае надо иметь 2 массива char и uchar, чтобы отдавать их функциям.

И эта задача появится не только у меня - в соседней ветке проблема с JASON библиотекой. Всем ее пользователям видимо придется вноосить аналогичные изменения.

Думаю проще добавить перегрузку в WebReques .

 
fxsaber #:

Такой костыль.

Не вижу потенциальных проблем, если такие перегрузки будут добавлены. Поддерживаю. ZIP-библиотеку пришлось править.

Вот это понятнее. Спасибо.
Думаю теперь это многим пригодится... (
 
fxsaber #:

Такой костыль.

Не вижу потенциальных проблем, если такие перегрузки будут добавлены. Поддерживаю. ZIP-библиотеку пришлось править.

Хотя ArrayCopy( ) наверное быстрее будет, т.к. в одно направление будет перемещать данные, а не в оба через промежуточный.

Но опять же трата времени даже на 1разовое копирование - это минус и потребление памяти - тоже минус.У меня файлы до 780мб
Перегрузки были бы  лучше.

 
fxsaber #:
Понял. Быстрое решение.
 
Vladislav Boyko #:

Проверил, <Alt+G> работает. И тот-же файл, и другой файл.

<Alt+M> работает тоже.

У меня пусто все время.

portable-режим.

 
b5057, если закрыть ME (portable), то он остается висеть в памяти (TaskManager). Если в Терминале после этого вызвать его через F4, то терминал повисает на минуту-другую и затем выдает следующее.
2025.06.03 19:23:48.079 Error   MetaEditor not found
2025.06.03 19:23:48.079 Error   cannot connect to editor
Лечится только принудительным прибитием metaeditor64.exe в TaskManager.