Какой тип у массива-таймсерии Time?

 
 
void Ass ( datetime arr[] )
{
 
}
 
int start  ()
{
   Ass(Time);
}

Дает ошибку -

'Time' - incompatible types C:\Program Files (x86)\MetaTrader - Alpari\experts\emain.mq4 (303, 9)


Если переделать Ass на


void Ass ( double arr[] )
{
 
}

То все ок, так какого же типа Time ?!!!

 
Данные типа datetime представляют собой время в секундах, прошедшее с 00:00 1 января 1970 года. Целые числа. 1 секунда, 2 секунды, 3 секунды ... Но это ИМХО и не уверено. Сам только что закончил код, пока писал несколько раз впадал в замешательство от подобных заморочек.
 

Это результат Time[0]

Вот такая вот штука :)

 
D500_Rised:

Это результат Time[0]

Вот такая вот штука :)


Это количество секунд прошедшее с полночи первого января 1970 года.


Это то как раз все понятно. А вот почему Time это дабл нет. Так же кстати вот стало не понятно, почему при передаче обычного массива или обячного массива-таймсерии во внешнюю DLL все отлично передается а при попытке передать в эту же функцию Open все падает.

 
MProgrammer:

Это то как раз все понятно. А вот почему Time это дабл нет. Так же кстати вот стало не понятно, почему при передаче обычного массива или обячного массива-таймсерии во внешнюю DLL все отлично передается а при попытке передать в эту же функцию Open все падает.


Time это не дубл, это int.

Вся фишка в том, что double это не только дробные значения но и целые тоже.

А int это только целые значения.

В данном случае double 123.00000000 равно по значению int 123. Разница лишь в размере зарезервированной памяти под данные переменные.

///

Так же кстати вот стало не понятно, почему при передаче обычного массива или обячного массива-таймсерии во внешнюю DLL все отлично передается а при попытке передать в эту же функцию Open все падает .

///

Здесь помочь не могу. Массив Open[ ] ничем не отличается от других подобных, разве что индексация элементов не как у обычного массива а наоборот.

А вот почему она не передается в Вашу DLL не знаю, так как телепатией, извините не обладаю. Разбираться со своей ДЛЛ_кой Вам придется самому, тк кто писал, к тому и вопрос.

 
D500_Rised:


Time это не дубл, это int.


Вся фишка в том, что double это не только дробные значения но и целые тоже.

А int это только целые значения.

В данном случае double 123.00000000 равно по значению int 123. Разница лишь в размере зарезервированной памяти под данные переменные.

///

Так же кстати вот стало не понятно, почему при передаче обычного массива или обячного массива-таймсерии во внешнюю DLL все отлично передается а при попытке передать в эту же функцию Open все падает .

///

Здесь помочь не могу. Массив Open[ ] ничем не отличается от других подобных, разве что индексация элементов не как у обычного массива а наоборот.

А вот почему она не передается в Вашу DLL не знаю, так как телепатией, извините не обладаю. Разбираться со своей ДЛЛ_кой Вам придется самому, тк кто писал, к тому и вопрос.


Да?


Ну нот возмите пример который я давал в начале и откомпилируйте. А я по смеюсь. Time это не дабл.... Вот до чего меня до учил, но даже не понял что я спрашиваю... Все пока. Без обид, я со своим dll ками конечно сам разберусь...

 

1- Учимся читать и отьучиваемся игнорировать ответы на собственные вопросы.

2-Хочешь получить понятный ответ- задай понятный вопрос.

3-ответы на твои вопросы:

//////////////////////

Какой тип у массива-таймсерии Time?

///////////////////////

///Ответ: double, как и у всех массивов. Пора бы знать.

////////////////////////

То все ок, так какого же типа Time ?!!!

/////////////////////////

///Что такое Time ? Массив или значение массива?

Теперь смейся.

 
D500_Rised:

1- Учимся читать и отьучиваемся игнорировать ответы на собственные вопросы.

2-Хочешь получить понятный ответ- задай понятный вопрос.

3-ответы на твои вопросы:

Какой тип у массива-таймсерии Time?

Ответ: double, как и у всех массивов. Пора бы знать.

То все ок, так какого же типа Time ?!!!

Что такое Time ? Массив или значение массива?

Теперь смейся.


Уважаемый, уже отсмеялся и пишу ...

Обьясняю - Забудь пока про вопросы мои. Их на самом деле нет уже.


А просто откомпилируй скрипт.


void Ass ( datetime arr[] )
{
 
}
 
int start  ()
{
   Ass(Time);
}

И потом попробй все перечитать сначала.

Да посмотри еще, что такое Time в документации, могу дать ссылку - https://docs.mql4.com/ru/predefined/variables/time там написан и его тип, кстати.

 

Забыл про вопросы Ваши,

Скрипт откомпилировал и получил соответсвующую ошибку,etc.

Зачем массиву присваивать тип данных datetime, когда известно что массивы имеют тип double?


arr[] -массив, тип double.

datetime- тип данных, представляемых в MQL4 ввиде количества секунд,прошедших с определенного момента,

если n=Time[5], то n=155514 (это например) целое число, тип int.

Конкретнее:

double, int и тд это типы переменных, массивов, значений etc.

datetime это тип данных.

Я еле как догадался в чем суть Вашей ветки, и то не уверен что на этот раз правильно.

Мне кажется, что загвоздка была лишь, в том, что datetime является типом данных, а не типом переменной или тп. А Вы это не заметили.

Я правильно понял?

 

Получается, что передать массив-таймсерию (Time) в пользовательскую функцию можно только как переменную типа double.

.... Странно... Ну и ладно...

Придется более фигуристые функции создавать.

 
nen >>:

Получается, что передать массив-таймсерию (Time) в пользовательскую функцию можно только как переменную типа double.

.... Странно... Ну и ладно...

Придется более фигуристые функции создавать.

Может попробывать сначала тип "int" ?