Если размер возвращаемомго массива не известен за ранее. То придется делать функцию которая узнает этот размер заранее, и потом уже в MQL выделять память нужного размера. И уже только потом передавать в DLL этот массив, после установки его размера к нужному.
Я не строю. Вы обьясните, что Вы не понимаете. Я ведь могу только догадываться.
Тем более что я ответил в начале предельно понятно.
Уже понял сам.
В описанном Вами случае память выделять нельзя. Но есть еще один.
Дллка занимается менеджментом памяти, MQL получает голый указатель и работает без вызова сторонних функций.
Т.е. типа:
{double Array[];int size =10;
ArrayResizeEx(Array, size);for(int i =0; i < size){
Array[i]= i;}
ArrayPushBack(size);
ArrayClearEx();}
Есть проблемы -- при неосторожном обращении, а также если обратиться к освобожденным ресурсам -- терминал свалится. Зато возможна вполне быстрая по сравнению реализация массивов.
Не уверен на 100%, что это сделать можно, но на 95% уверен
Если Вам необходимо таскать с собой. Некий массив от одной функции DLL к другой. То просто заверните его в структуру с длинной и верните ее адрес как int. До тех пор пока не выпустят 64-битный терминал это будет работать.
Но с другой стороны всякими хаками можно и сделать. Кто мешет. Но вот будет ли это потом работать если МТ захотят поменять что-то? А они точно захотят.
Да я думаю и быстрее то нифига не будет. Надо быстро надо просто сделать спец функцию в DLL и туда массив передавать.
Хз, посмотрим. Зависит от того, как устроен внутри MQL массив.
А какая разница как они там внутри устроенны. Если там идет по сути маршалинг. Испортить ( переделат ) массив вряд ли получится. Да и нахрена? Я же уже говорил что надо быстро надо в DLL
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Процесы тут не причем. DLL работате в контексте процесса терминала.
Если размер возвращаемомго массива не известен за ранее. То придется делать функцию которая узнает этот размер заранее, и потом уже в MQL выделять память нужного размера. И уже только потом передавать в DLL этот массив, после установки его размера к нужному.
Но лучше знать заранее. :)
Я не строю. Вы обьясните, что Вы не понимаете. Я ведь могу только догадываться.
Тем более что я ответил в начале предельно понятно.
Уже понял сам.
В описанном Вами случае память выделять нельзя. Но есть еще один.
Дллка занимается менеджментом памяти, MQL получает голый указатель и работает без вызова сторонних функций.
Т.е. типа:
Есть проблемы -- при неосторожном обращении, а также если обратиться к освобожденным ресурсам -- терминал свалится. Зато возможна вполне быстрая по сравнению реализация массивов.
Не уверен на 100%, что это сделать можно, но на 95% уверен
Я незнаю.
Вы так пробовали?
Я не понимаю что это за функции.
Если Вам необходимо таскать с собой. Некий массив от одной функции DLL к другой. То просто заверните его в структуру с длинной и верните ее адрес как int. До тех пор пока не выпустят 64-битный терминал это будет работать.
Я не понимаю что это за функции.
:) Ааа... Думаю не получится сделать вообще.
:) Ааа... Думаю не получится сделать вообще.
Хз, посмотрим. Зависит от того, как устроен внутри MQL массив.
:) Ааа... Думаю не получится сделать вообще.
Но с другой стороны всякими хаками можно и сделать. Кто мешет. Но вот будет ли это потом работать если МТ захотят поменять что-то? А они точно захотят.
Да я думаю и быстрее то нифига не будет. Надо быстро надо просто сделать спец функцию в DLL и туда массив передавать.
Надо быстро надо просто сделать спец функцию в DLL и туда массив передавать.
Нее, вызов функции в MQL не быстрый. Вобщем если получится, обрисую всю картинку.
Хз, посмотрим. Зависит от того, как устроен внутри MQL массив.
А какая разница как они там внутри устроенны. Если там идет по сути маршалинг. Испортить ( переделат ) массив вряд ли получится. Да и нахрена? Я же уже говорил что надо быстро надо в DLL