Функция не может вернуть 2 параметра. Как варианты решений:
- извлекать 2 массива двумя разными функциями
- склеить 2 массива в 1 через какой-нибудь заранее задуманный разделитель (если они однотипные)
- вписать содержимое массивов в текстовый документ и научить своеника считывать из него данные.
Из dll в мт вообще нельзя вернуть массив (даже 1) :)
определи массив(ы) в коде mql, передай их в функцию по ссылке, и модифицируй значения внутри функции. 1 минус - только статический размер массивов.
Из dll в мт вообще нельзя вернуть массив (даже 1) :)
определи массив(ы) в коде mql, передай их в функцию по ссылке, и модифицируй значения внутри функции. 1 минус - только статический размер массивов.
Менять размер MQL массива можно только в MQL.
Как-нить так:
{ int size1 = 20, size2 = 20; double array1[], array2[]; ArrayResize(array1, size1); ArrayResize(array2, size2); // bool GetArrays(double& array1[], double& array2[], int& size1, int& size2); if (GetArrays(array1, array2, size1, size2)) { ArrayResize(array1, size1); ArrayResize(array2, size2); } else { ArrayResize(array1, size1); ArrayResize(array2, size2); GetArrays(array1, array2, size1, size2); } }
Паскаль уже не помню, поэтому функцию GetArrays тоже накидаю на mql --
bool GetArrays(double& array1[], double& array2[], int& size1, int& size2) { double outArray1[], outArray2[]; // это те массивы, что нам надо достать из ДЛЛ int outSize1, outSize2; // это размеры массивов -- мы их должны знать. if (size1 >= outSize1 && size2 >= outSize2) { //... //поэлементное копирование outArray1 в array1 и outArray2 в array2 size1 = outSize1; size2 = outSize2; return (true); } else { size1 = outSize1; size2 = outSize2; return (false); } return (false); }Надеюсь, принцип понятен.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем доброго времени суток!
Столкнулся с проблемой извлечения 2-х массивов из dll (Pascal) . Что-то сразу не очень получилось.
Были-ли у кого аналогичные проблемы. Если да то как были решены?
Заранее благодарен.