Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Массивы всегда передаются по ссылке
"Функции, импортируемые из DLL в mql4-программу, должны обеспечивать соглашение о связях, принятое для функций Windows API. Для обеспечения такого соглашения в исходном тексте программ, написанных на языках C или C++ используется ключевое слово __stdcall, которое является специфическим для компиляторов от фирмы Microsoft(r). Обсуждаемое соглашение о связях характеризуется следующим:
- вызывающая функция (в нашем случае mql4-программа) должна "видеть" прототип вызываемой (импортируемой из DLL) функции, для того чтобы правильно сложить параметры на стек;
- вызывающая функция (в нашем случае mql4-программа) складывает параметры на стек в обратном порядке, справа налево - именно в таком порядке импортируемая функция считывает переданные ей параметры;
- параметры передаются по значению, за исключением тех, которые явно передаются по ссылке (в нашем случае строк)
- импортируемая функция, считывая переданные ей параметры, сама очищает стек."
Я это понимаю так, что массив в функцию будет передан не как ссылка на начало массива, а как копия массива, которая будет удалена после выполнения функции. Единственный способ этого избежать - передача явно по ссылке.
На указатели переделаю, а вот убраь изменение размеров никак.
Я это понимаю так, что массив в функцию будет передан не как ссылка на начало массива, а как копия массива, которая будет удалена после выполнения функции. Единственный способ этого избежать - передача явно по ссылке.
:)
An out parameter, like a variable parameter, is passed by reference. With an out parameter, however, the initial value of the referenced variable is discarded by the routine it is passed to. The out parameter is for output only; that is, it tells the function or procedure where to store output, but doesn't provide any input.
Короче при использовании var и out параметры передаются по ссылке
Using const allows the compiler to optimize code for structured - and string-type parameters. It also provides a safeguard against unintentionally passing a parameter by reference to another routine.
const тоже передает по ссылке.
Ну по-крайней мере обычными способами вернуть.
Есть запасной вариант (склеять их в один), но это извините меня за выражение "через задницу".
Буду очень признателен.
Учите С. У меня в С проблем нет. А с Паскалем, к сожалению, помочь не могу.
Значит в С возвращает 2 массива? Я правильно понял?
Буду учить С
Да, возвращает.