нашел как обращаться к динамическому массиву .. и как с ним работать в dll .. если кому интересно опишу..
столкнулся с другой проблемой.. при обращении к dll в первый раз все нормально.. но вот во второй (при работающей программе) . или закрываю терминал .. то виснет терминал и процессор грузит на все.. кто знает подскажите.. я понимаю что язык программирования уже mt5 но.. я писал у них на сайте они меня отправили сюды...
нашел как обращаться к динамическому массиву .. и как с ним работать в dll .. если кому интересно опишу..
я как-то писал dll-ку на Делфи для MT4 (года 4 назад), но эт было давно и тонкостей не помню.
столкнулся с другой проблемой.. при обращении к dll в первый раз все нормально.. но вот во второй (при работающей программе) . или закрываю терминал .. то виснет терминал и процессор грузит на все.. кто знает подскажите.. я понимаю что язык программирования уже mt5 но.. я писал у них на сайте они меня отправили сюды...
напишите разработчикам. // на пятом форуме в профиле слева ссылка "Сервисдеск". если нет профиля на mql5.com - заведите.
желательно с чёткими примерами кода.
нашел как обращаться к динамическому массиву .. и как с ним работать в dll .. если кому интересно опишу..
все неописываю.. кто пишет поймет.. на delphi 7
Tarray1= array[0..0] of Double;
PTarray1= ^Tarray1;
procedure test1(
name: PWideChar;// имя .. любой string
data_k: Integer;// размер массива data // обязательно!!
data: PTarray1
); stdcall;
var
q1: Integer;
begin
for q1:= 0 to 5 do begin
ShowMessage(IntToStr(q1)+ ' = '+ FloatToStr(data^[q1]));
end;
end;
мне нравиться dll .. пишу нейронку думаю без dll никуда.. и скорость вроде выше чем в mt4
на mt4
void test1(string name,
int kol_razm,
int data_k,
double &data[] // входные данные
);
#import
double data[];.
#import
int start(){
ArrayResize(data, 2);
data[0]= 2;
data[1]= 3;
test1("name", ArraySize(data), data);
}
После первого вызова, терминал будет удерживать ДЛЛку под собой, до его закрытия. Проверьте этот момент.
Можно принудить ось выгружать неиспользуемые dll. Если это очень нужно.
пожалуйста не говорите космическим языком.. как я могу в терминале сделать выгрузку dll .. пример кода.. пожалуйста..
еще вопрос .. если на одном графике работает сова с dll и на второй график кинуть сову с dll .. они нормально будут работать?
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
помогите кто может ..
в delphi 7 dll процедура..
procedure test1(var data: array of Double); stdcall;
begin
ShowMessage('Вошли ');
end;
в mt4 :
#import "gayss.dll"
void test1( double &data[] );
#import
ArrayResize(data, 6);
data[0]= 2;
data[1]= 4;
data[2]= 8;
data[3]= 16;
data[4]= 21;
data[5]= 3;
test1(data);
и ошибка вылазит.. 2014.02.06 17:39:04.241 stack damaged, check DLL function call in 'SOG_2014.mq4' (80,7)
может кто знает как надо по правильному..