
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Print не пробовали?
Четвёртый пример ошибку выдаёт : 'operator=' - illegal operation use SAMPLE_04.mq4 34 7
#property copyright ""
#property link ""
#property version ""
#property strict
//Пример 4. Копирование структур средствами MQL5
//---
struct str1
{
double d; // 8 байт
long l; // 8 байт
int i[3]; // 3 * 4 = 12 байт
};
//---
struct str2
{
uchar c[ 8 + 8 + 12 ]; // размер структуры str1
};
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart(){
str1 src; //
src.d = -1; //
src.l = 20; //
//--- заполняем параметры структуры
ArrayInitialize(src.i, 0);
str2 dst; //
//--- превратили структуру в байтовый массив
dst = src; // <----- Ошибка
}
Сама идея про участок памяти понятна, может в определениях где то не всё ровненько?
Подскажите в чём причина?
Заранее спасибо.Сама идея про участок памяти понятна, может в определениях где то не всё ровненько?
Подскажите в чём причина?
структуры разных типов уже нельзя копировать, язык MQL возможность убрал
пользуйтесь union
uchar по ходу неправильно, и там double присутствует тоже подозрительно.
И по ходу src надо указать что именно ей принадлежит и будет передаваться.
Вам уже кто-то подправил так же как и предположил. Хорошо. Думайте. Удачи.
а для mql4 будет работать на сегодняшний день?
языки (MQL4 / MQL5) сейчас полностью одинаковы - отличие в 2-3 функциях отсутствующих в MQL4 (ArrayPrint и что то еще по мелочи) и в "новых плюшках" для MQL5 - БД, DirectX и OpenCL
но статья написана 8 лет назад, сейчас MQL стал строго типизированным языком, и чтобы присвоить 2 структуры (пример в статье) нужно писать самостоятельно конструктор копирования или сериализовать структуру в массив байт и затем обратно
Интересно, можно ли получить реальный указатель на функцию. Указатели, полученные с помощью typedef, отлично работают внутри mql программы. Но к сожалению передать в dll мне их не удалось.
Если с++ + встроенный ассемблер можешь и в курсе что и как в стек кладется, а термины дальний и ближний вызов понятны, то можешь попробовать. Гарантию, что получится не дам, но по идее можно.