Объявление структур в MQL4

 

В Си есть такой специальный тип данных - структуры, описываются типа так:


Struct MуStructure {
double price;
long int time;
};

Есть ли возможность так изощриться в MQL4 ?


Другими словами, есть dll-ка, у которой буфер обмена данными - чередование

типа double и int (в виде long, как время), т.е. либо объявляй в импорте параметр

функции как длинное целое, тогда проблема с дробными, либо наоборот. .


PS: Может есть такой вариант как назначить адрес в массиве целого

указателем на адрес дробного и считать значение как целое ?

 
Структур нет. Вместо структур надо массив типа int использовать с размером соответсвующим размеру структуры. Интересней, как потом из этих интов получить дабл. Если сделаете покажете?
 
Как вариант, использовать массив дабл.
 
Integer:
Структур нет. Вместо структур надо массив типа int использовать с размером соответсвующим размеру структуры. Интересней, как потом из этих интов получить дабл. Если сделаете покажете?


А в чём сложность? Простое D = I, т.е. целевое преобразование типа пока работает..

Или я что-то не так понял?

 
SK. писал (а):
Integer:
Структур нет. Вместо структур надо массив типа int использовать с размером соответсвующим размеру структуры. Интересней, как потом из этих интов получить дабл. Если сделаете покажете?


А в чём сложность? Простое D = I, т.е. целевое преобразование типа пока работает..

Или я что-то не так понял?


Переменная double 8 байт, эти 8 байт образующие переменную double, будут находиться в двух переменных int. Может все легко делается, просто я не знаю как. Можно посоветтовать сделать промежуточную dll в которую обычным образом параметры передавать, а в ней заполнять структуры и передавать дальше.
 

Наверное, я просто что-то не то понял..

Если речь о преобразовании типа внутри mql4-программы, то это решается просто: D = I.

Если речь об импорте функции из dll, то вот: Справочник MQL4 Основы языка Препроцессор Импорт функций и вот Справочник MQL4 Основы языка Переменные Описание внешних функций

 

Ресь идет о передаче и получении структур из импортированных функций.

 
Например в функцию GetWindowRect из user32.dll надо передавать структуру типа RECT, которая состояит из 4-ех интов: Left, Top, Right. Bottom. Вместо стркутры можно использовать массив инт из 4-ех элементов. Есть структуры, которые состоят не только из int, еще из double, bool и string. В этом случае тоже только один вариант - использовать один массив из интов, а вот потом рассчитать значение каждой переменной используя этот массив.
 

Речь идет о массиве состоящем из разнородных типах данных, объединенных в структуру.

или как преобразовать содержание DOUBLE в LONG по типу определения typedef union в Си ?


Вопрос к разработчикам: возможно ли такое ?

 
Valio:



Речь идет о массиве состоящем из разнородных типах данных, объединенных в структуру.

или как преобразовать содержание DOUBLE в LONG по типу определения typedef union в Си ?


Вопрос к разработчикам: возможно ли такое ?


В MQL4 есть только масивы. Все элементы массива могут иметь только один тип, указанный при объявлении массива. Тип выражений при вычислениях определяется в соответствии с правилом приоритета типов. Различают неявное и целевое преобразование типа. (ждём MQL5).

 

Можно так:

double MуStructure.price;
datetime MуStructure.time;
Причина обращения: