а функцией ее вы не пробовали?
function trend(a:double):double; stdcall; begin result:=a+100; end;
abc(a:double; var b:double; var c:tdatetime);не пробовали?
используй var вместо out
у меня работает
покопайся на форуме, я выкладывал шаблон многопоточной dll для Delphi
Нашел вот ваш пост https://www.mql5.com/ru/forum/125772/page2, где написано :
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 outparameter 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 тоже передает по ссылке.
Пока не пойму только как передать по ссылке
кстати с var не работает тоже почемуто у меня
если возвращаешь одно значение, простой тип-значение, то делай это через return
если массив, то через ссылку во входных параметрых функции.
решил взять эту же dll и попробовать присобачить к своему приложению.
Вот так не работает
procedure trends(a:double; var b: double); external 'Project2.dll';
А вот так работает:
procedure trends(a:double; var b: double); stdcall; external 'Project2.dll';
так что то чего я пытаюсь добиться в mql4 невозможно
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть DLL написанная в Delphi6
end.
В MQL вызываю так:
double a;
double b;
a = 0.1;
trends(a, b);
Print(b);
Но процедура trends(a, b); не возвращает b, возникает ошибка 2013.04.24 01:47:26 myDll USDCHF,H1: function 'trends' call from dll 'Project2.dll' critical error c0000005 at 02F1218F.