Ошибки, баги, вопросы - страница 2895

 
A100:
Ошибка при компиляции:

раньше работало, но в начале года сломали указатели на функции, кажется в МТ4 должен еще работать Ваш код

так будет работать:

typedef void (*fn)();
void f() {}
fn g() { return f; }
void OnStart()
{
    fn func = g();
    func();
}

т.е. сейчас нужно временную переменную использовать ( теперь нельзя использовать даже массив указателей!!!! )

A100:

Здесь некое противоречие, поскольку

А какая собственно принципиальная разница?

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

... ноэтонеточно ;)

 
Igor Makanu:

т.е. сейчас нужно временную переменную использовать ( теперь нельзя использовать даже массив указателей!!!! )

Я для того и написал, чтобы Разработчики по возможности сделали без временной

 
A100:

Я для того и написал, чтобы Разработчики по возможности сделали без временной

@fxsaber писал сразу как нашли это , наверное год прошел уже, ну может Вас услышат
 
Igor Makanu:

т.е. сейчас нужно временную переменную использовать ( теперь нельзя использовать даже массив указателей!!!! )

Пример есть, подтверждающий что нельзя?

 
A100:

Пример есть, подтверждающий что нельзя?

написал пример:

typedef void (*fn)();
void f() {}
fn g() { return f; }
void OnStart()
{
//   fn ptr[10];                                                 //possible use of uninitialized variable 'ptr'
   fn ptr[10] = {0};                                             // OK
   for(int i = ArraySize(ptr) - 1; i >= 0; i--) ptr[i] = g();
   
//   for(int i = ArraySize(ptr) - 1; i >= 0; i--) ptr[i]();     //')' - expression expected
   
   for(int i = ArraySize(ptr) - 1; i >= 0; i--)                  // OK
   {
      fn func = ptr[i];
      func();
   }
}

удивился, почему то выдает предупреждение fn ptr[10];                                                 //possible use of uninitialized variable 'ptr'

осталось выяснить чем инициализировать указатели на функции


раньше можно было использовать в MQL5:  ptr[i]();
 
Igor Makanu:

раньше можно было использовать в MQL5:  ptr[i]();

Да... припоминаю

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

A100, 2020.07.23 02:40

Ошибка при компиляции

typedef void (*fn)();
void OnStart()
{
        fn ff[ 1 ];
        ff[ 0 ](); //Error:: ')' - expression expected
} 

а раньше (прошлогодние build) все компилировалось и работало нормально

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

A100, 2020.07.23 16:31

Извлек из старых запасов build 2085x32 - все компилируется - можете сами попробовать

 
Ошибка при компиляции:
class EventChartCustom {
      EventChartCustom() {}
};
bool f()
{
    return (EventChartCustom( 0, 0, 0, 0, NULL ) ? true : false); //(1) Error: 'EventChartCustom' - wrong parameters count
}
а так нормально:
bool f()
{
    if (    EventChartCustom( 0, 0, 0, 0, NULL ) ) //(2) нормально
        return (true);
    else
        return (false);
}

А какая принципиальная разница?

 
Ошибка при компиляции:
class A {
      A() {}
};
void A() {} //(1) Error: 'A' - identifier already used
а так нормально:
void A() {} //(2) нормально
class A {
      A() {}
};

А какая принципиальная разница?

 
Правило из Маркета.
В Продуктах запрещен вызов любых DLL-библиотек, включая системные библиотеки Microsoft Windows.
Имеет ли право Маркет-продукт расширять свой функционал в случае разрешения использования DLL пользователем?
 

Не нашел статистики по Маркету. Поэтому вопрос к продавцам кроссплатформенных продуктов.

Действительно ли MT5-версии продаются лучше MT4?

Причина обращения: