Возврат данных из DLL

 

День добрый!


Господа, может кто подскажет.

Надо из DLL возвращать в советника массив double, размер которого первоначально не известен.

Можно ли это стандартными средствами?


--

rip

 
Загляни в папку <MT4>\experts\samples\DLLSample\
 
Luptator писал (а) >>
Загляни в папку <MT4>\experts\samples\DLLSample\

Нет, там можно вернуть только измененные значение элемента массива.

Мне надо вернуть новый массив и его новый размер. Т.е. терминал должен выделить память под эту переменную и т.д.


Я могу вернуть как char*, скажем как csv строку - а потом в МТ распарсить. Не удобно. Вот и интересует, может есть стандартные средства.


--

rip

 
А вот оно как. Ты хочешь изменять размер массива переданного в dll-функцию в dll-ке. Боюсь не получится (у меня терминал падает при подобной попытке). А если тебе из dll возвращать сначала необходимых размер массива, в mql4 устанавливать нужный размер, а потом передавать его по ссылке и забивать данные. Либо действительно использовать строку. Можно ещё в файл писать. Или задавать размер массива фиксированый и достаточно большой.
 
rip писал (а) >>

День добрый!

Господа, может кто подскажет.

Надо из DLL возвращать в советника массив double, размер которого первоначально не известен.

Можно ли это стандартными средствами?

--

rip

размер МАССИВА! всегда известен

как только ВАМ становиться размер массива НЕ ИЗВЕСТЕН!, то это будующий CRASH

в MT всегда можно определить размер массива перед тем как передавать его в DLL

DLL в данном случае не может изменять размеры массива ...

 
YuraZ писал (а) >>

размер МАССИВА! всегда известен

как только ВАМ становиться размер массива НЕ ИЗВЕСТЕН!, то это будующий CRASH

в MT всегда можно определить размер массива перед тем как передавать его в DLL

DLL в данном случае не может изменять размеры массива ...

Ну как говорится, через ухо я сделал ;) сначала конкретизируем размер возвращаемого массива ф-цией от DLL, потом получаем данные.

Не удобно, но как есть.

 
rip писал (а) >>

Ну как говорится, через ухо я сделал ;) сначала конкретизируем размер возвращаемого массива ф-цией от DLL, потом получаем данные.

Не удобно, но как есть.

да разумеется - иначе никак

ну массив как бы можно объявить с запасом - если у вас там динамика сильная но не бесконечная же

 
YuraZ писал (а) >>

да разумеется - иначе никак

ну массив как бы можно объявить с запасом - если у вас там динамика сильная но не бесконечная же

Да она не сильная, просто хотелось по уму :)

 
rip писал (а) >>

Да она не сильная, просто хотелось по уму :)

пол любому контроль, выходы за предолы массива - надо отслеживать

я понял так что в DLL хотелось принять решение о расширении массива - такое MQL4 не потерпит

 
YuraZ писал (а) >>

пол любому контроль, выходы за предолы массива - надо отслеживать

я понял так что в DLL хотелось принять решение о расширении массива - такое MQL4 не потерпит

Да это интерфейс для нейросети, хотелось сделать его универсальным - т.е. можно возвращать любое кол-во выходных значений сети - это массив double.

Я чуть позже выложу тестовый индюк посмотришь.

Причина обращения: