Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Примеры описаны также и в https://docs.mql4.com/ru/basis/preprosessor/import
Посмотрите пример здесь https://www.mql5.com/ru/forum/50604 (в функцию WinAPI GetLocalTime должен передаваться указатель на структуру из 8 2-х байтовых слов, в которую записываются значения времени)
И здесь https://www.mql5.com/ru/forum/50651
Посмотрите пример здесь https://www.mql5.com/ru/forum/50604 (в функцию WinAPI GetLocalTime должен передаваться указатель на структуру из 8 2-х байтовых слов, в которую записываются значения времени)
Я могу догадаться, что это как раз указатель. Однако хотелось бы знать точно.
А вот эта часть кода для меня вообще темный лес
nYear=TimeArray[0]&0x0000FFFF;
nMonth=TimeArray[0]>>16;
nDay=TimeArray[1]>>16;
nHour=TimeArray[2]&0x0000FFFF;
nMin=TimeArray[2]>>16;
nSec=TimeArray[3]&0x0000FFFF;
---------------------------------------------------
TimeArray[0]& - это видимо указатель на нулевой член массива, а '0x0000FFFF' -'это что за действие с ним.
Что значит такая запись 'TimeArray[0]>>16' - тоже хотелось бы знать.
Думаю это что-то из адресной математики. Ну напишите тогда еще одну главу в словаре MQL4
===
Функция WinAPI GetLocalTime вообще принимает в качестве параметра не массив, а структуру из 8 слов (WORD - двухбайтовое целое)
===
в MQL4 нет 2-хбайтовых целых (тип short), а есть только 4-хбайтовые целые (тип int). Поэтому такие битовые операции над 4-байтовыми целыми выделяют необходимые 2-байтовые целые.
По порядку:
год получается при помощи обнуления левой половины самого первого элемента массива
месяц получается путём сдвига на 16 бит (то есть левая половина сдвигается на место правой половины)
Про битовые операции смотрите https://docs.mql4.com/ru/basis/operations/bit
В обсуждаемом примере иллюстрируется возможность передавать указатель на массив и обработка полученных в этом массиве значений
Если же Вам необходимо передать в dll-скую функцию указатель на переменную целого типа, то передавайте массив соответствующего типа по ссылке и обрабатывайте потом его первый элемент
Например
вполне работает.
Всем доброго времени суток!
простое решение нашел klot, на ветке http://www.fxexpert.ru/forum/index.php?showtopic=656&st=140
приведу от туда кусочек кода
#import "NS2-32.dll"
int OpenNet(string defpath, int& netnumber[1], int& n_input[1], int& n_out[1]);
int FireNet(int& netnumber[1], double& inarray[], double& outarray[]);
int CloseNet(int& netnumber[1]);
#import
............................
//------------------------------------------------------------------+
int ret;
int netnumber[1], N_in[1], N_out[1];
double inarray[],outarray[];
string defpath="C:NeuroShell 2EXAMPLESTest2FFT_test.def";
//------------------------------------------------------------------+
................................
int init()
{
..........................................
ret=OpenNet(defpath, netnumber, N_in, N_out);
Всем доброго времени суток!
простое решение нашел klot, на ветке http://www.fxexpert.ru/forum/index.php?showtopic=656&st=140
приведу от туда кусочек кода
#import "NS2-32.dll"
int OpenNet(string defpath, int& netnumber[1], int& n_input[1], int& n_out[1]);
int FireNet(int& netnumber[1], double& inarray[], double& outarray[]);
int CloseNet(int& netnumber[1]);
#import
............................
//------------------------------------------------------------------+
int ret;
int netnumber[1], N_in[1], N_out[1];
double inarray[],outarray[];
string defpath="C:NeuroShell 2EXAMPLESTest2FFT_test.def";
//------------------------------------------------------------------+
................................
int init()
{
..........................................
ret=OpenNet(defpath, netnumber, N_in, N_out);