Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 937

 

Такой вопрос: я хочу создать одномерный массив в котором с 0 по 4 элемент будут храниться double, с 5 по 9 будут храниться datetame, с 10 по 14 будет храниться int. Возможно ли организовать такое в mql4, если да покажите как, я видел пример со структурами но это было в с++ но я потерял ссылку на сайт?

 
Seric29:

Такой вопрос: я хочу создать одномерный массив в котором с 0 по 4 элемент будут храниться double, с 5 по 9 будут храниться datetame, с 10 по 14 будет храниться int. Возможно ли организовать такое в mql4, если да покажите как, я видел пример со структурами но это было в с++ но я потерял ссылку на сайт?

Массив может иметь только один тип.

Но кто запрещает иметь тип массива с максимальным типом данных? В данном случае - double.

 
Artyom Trishkin:

Массив может иметь только один тип.

Но кто запрещает иметь тип массива с максимальным типом данных? В данном случае - double.

Мне нужно чтобы имя было одинаковое иначе придётся левые проверки делать. А через структуру нельзя такое сделать объявит переменные в ней а потом объединить в массив? А оператор union нельзя к этому делу приклеить?

 
Seric29:

Мне нужно чтобы имя было одинаковое иначе придётся левые проверки делать. А через структуру нельзя такое сделать объявит переменные в ней а потом объединить в массив? А оператор union нельзя к этому делу приклеить?

Имя чего?

 
Artyom Trishkin:

Имя чего?

Имя массива. Я так понял нельзя по сути даже если структуру сделать то обращаться через точку придётся а объединить в одно имя информацию не получиться, может я не то видел жалко ссылку потерял.

 
Seric29:

Имя массива. Я так понял нельзя по сути даже если структуру сделать то обращаться через точку придётся а объединить в одно имя информацию не получиться, может я не то видел жалко ссылку потерял.

Зачем разные имена делать для одного массива? Это вообще как вы себе представляете?

Ну вот есть у вас один массив для хранения в нём разных числовых типов (кроме, естественно, string). Массив должен иметь тип, равный максимальному типу записываемых в него данных. Ну вот и заполняйте его разными типами. А когда будете их получать, то следите за индексами, которые вам и так известны, чтобы в нужные переменные с правильными типами получать значения из разных ячеек массива.

 c 0 по 4 элемент будут храниться double, с 5 по 9 будут храниться datetame, с 10 по 14 будет храниться int

double array[15];
array[0]=0.0; array[1]=0.1; array[2]=0.2; array[3]=0.3; array[4]=0.4;
array[5]=(datetime)5; array[6]=(datetime)6; array[7]=(datetime)7; array[8]=(datetime)8; array[9]=(datetime)9;
array[10]=(int)10; array[11]=(int)11; array[12]=(int)12; array[13]=(int)13; array[14]=(int)14;
Имя-то одно: array
 
Artyom Trishkin:

Зачем разные имена делать для одного массива? Это вообще как вы себе представляете?

Ну вот есть у вас один массив для хранения в нём разных числовых типов (кроме, естественно, string). Массив должен иметь тип, равный максимальному типу записываемых в него данных. Ну вот и заполняйте его разными типами. А когда будете их получать, то следите за индексами, которые вам и так известны, чтобы в нужные переменные с правильными типами получать значения из разных ячеек массива.

Имя-то одно: array

Так в них и храниться будут разные данные.

 
Seric29:

Так в них и храниться будут разные данные.

В чём "в них" ?

 
Seric29:

я видел пример со структурами но это было в с++ но я потерял ссылку на сайт?

если Ваш пример не имел указателей, то перенос его в MQL будет без проблем

Seric29:

А оператор union нельзя к этому делу приклеить?

union не оператор! это тип! он описывается как структура, но применяется для хранения разных типов данных в одном участке памяти https://www.mql5.com/ru/docs/basis/types/classes#union


Seric29:

Ну так вот я хотел за это зацепиться передать массив в макрос а в макросе вызвать перегружаемую функцию и вернуть результат, вроде примитивная задача но при вызове перегружаемой функции в макросе выбивает предупреждение что функций 3 получается что в макросе нужно писать критерий который будет определять какую из перегружаемых функций вызывать а тут опять придётся спрашивать как провести данную проверку, в общем идея провалилась.

начните читать хоть какую нибудь книгу по С++, Ваши вопросы это взрыв мозга, Вы пишете технические термины, на первый взгляд кажется, что Вы задаете конкретный вопрос, а по сути Вы просто оперируете терминами без понимания сути.... что макрос вернет? куда вернет? в теле макроса перезагружаемая функция.... я даже не могу обьяснить как выглядит Ваш вопрос.

Чтобы понять что такое макрос, пишите этот термин правильно, макроПОДСТАНОВКА , может быть Вам будет проще понять, что это

 
Seric29:

Это должно работать так.

В общем хочу добиться такого эффекта, но в области классов нет опыта. Код компилируется и работает

Прикольно.