Тут надо иметь в виду, что динамический массив в MQL5 имеет предварительное описание.
Посмотрите в документации Объект динамического массива.
Тут надо иметь в виду, что динамический массив в MQL5 имеет предварительное описание.
Посмотрите в документации Объект динамического массива.
это-то понятно, справку я читал вдоль и поперек.
я насколько понимаю, нечто подобное и в четверке существовало (хоть и не описано в справке) - причем и там, и там фактически средствами MQL эти структуры все равно не достать. Тем не менее, каким-то образом же должны передаваться массивы во внешние функции не MQL5. В 4 версии языка это реализовано: при вызове внешней функции ей передается не структура, а адрес данных в памяти, а вот с пятой вопрос. При этом компилятор ошибку не выдает, и функция вызывается без проблем, т.е. конвенции о вызове получается соблюдены, что говорит о том, что разработчик MQL5 намеревался эту проблему решить аналогичным способом как в 4. Тем не менее, исследование показывает, что указатель на данные формируется неверно - он указывает не туда, где находятся данные, а на другое место (на какое - не знаю).
Поэтому и вопрос к разработчикам: когда я передаю массив в DLL, куда указывает этот параметр - на данные или куда-то еще. А если куда-то еще, то как достать данные?
Основные опасения связаны с тем, что если данный механизм не будет реализован, то целый класс полезных инструментов полностью выпадает из рук трейдера - например, придется выдумывать новые способы работы как с пользовательскими DLL, реализующими обработку данных, так и с такими популярными среди трейдеров/программистов продуктами как Matlab, Neuroshell и т.п.
Спасибо за сообщение. Баг нашли. Исправляем.
Когда Вы передаёте массив в DLL, то в DLL будет получен адрес начала буфера данных.
Ошибка в передаче данных динамического массива исправлена, ждите обновлений.
Спасибо за сообщение. Баг нашли. Исправляем.
Когда Вы передаёте массив в DLL, то в DLL будет получен адрес начала буфера данных.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Работая над сабжем, дошел до индикаторов, делающих некоторые расчеты во внешней DLL. На этапе тестирования выяснилось, что если в 4-ке можно было передать в некую DLL-функцию динамический массив по ссылке и записать в него некоторые значения, то в 5-й версии языка это почему-то не получается...
Для примера: проделываю примерно следующие манипуляции
Если теперь в самой DLL вывести на экран значения a[i], например, через MessageBox(), то они получаются совсем не 0,1,2,3 и т.д., а всякая белиберда, явно не с того адреса памяти, с какого нужно.
Внимание, вопрос: есть ли в MQL5 глюк с передачей параметра-массива, а если нет, то каким образом правильно осуществлять эту самую передачу?