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

 
A100:

Возможно это когда компилятор объективно не располагает информацией:

т.е. может в f() была инициализация i, а может и нет. И здесь C++ компилятор даёт предупреждение, а MQL почему то - нет

В С++ не скрыты адреса ячеек памяти, по этому переменная инициализируется мусором.
В Mql адреса ячеек памяти скрыты и не доступны. Тут уже как разработчик Mql намудрил в компиляторе ))

Короче инициализируйте всегда переменные, и не будет головняка.
 
Roman:

Да, но до первой итерации переменная j ещё не инициализирована, на это и ругается компилятор.

если эту переменную не использовать или поставить присвоение i=j вниз тела цикла, что будет идентично выполнению первого варианта, то предупреждений не будет. Компилятор не проверяет логику цикла и последовательность исполнения, а сверху вниз проверяет синтаксис, думаю так, не знаю точно)

 
Ошибка в сервисе поиска по сайту. Такой поиск не выдает этот результат.
 

fxsaber:

И в других ситуациях.

жмешь ответить вместо это качаешь терминал - шикарное нововведение

 
Ошибка при компиляции:
#define MACRO(X)\ //Error: '\' - unexpected in macro definition
              X
 
TheXpert:

жмешь ответить вместо это качаешь терминал - шикарное нововведение

Это всё одного поля ягодки... И с тем вопросом, за который меня тут чуть не прибили (в одном выпадающем меню кошелёк и непрочитанные темы - прям братья-близнецы), и с Вашим, и ещё (не знаю как у кого) у меня висит такая ... "фича"

Вот что делать с этой надписью? Нигде никакой ссылки на просмотр кто просится и зачем, нет (возможно, она лежит в кошельке, но я туда не заглядывал). 

Очень стойкое впечатление, что все эти "замечательные" изменения на сайте делает один человек.... И лично под себя. Именно так, как ОН сам считает нужным для себя же. И на наше мнение чихать он хотел...

 
Сергей Таболин:

Вот что делать с этой надписью?

Хз, когда есть нормальные заявки эта надпись пропадает.
 

При смене торгового счета REASON_ACCOUNT ожидалось получать прошлый счет и завершать работу именно с ним, по логике вещей, но нет если счет изменился то уже в деините при REASON_ACCOUNT получаем новый номер.

По логике программа должна закончить работу с текущими данными и при новом вызове уже передавать новые данные и не менять данные в процессе работы...

 
Vladimir Pastushak:

При смене торгового счета REASON_ACCOUNT ожидалось получать прошлый счет и завершать работу именно с ним, по логике вещей, но нет если счет изменился то уже в деините при REASON_ACCOUNT получаем новый номер.

По логике программа должна закончить работу с текущими данными и при новом вызове уже передавать новые данные и не менять данные в процессе работы...

Вот код демонстрирующий не верное поведение

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   Print("Start ", (string)AccountInfoInteger(ACCOUNT_LOGIN));
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   if(reason == REASON_ACCOUNT)
      Print("Stop ", (string)AccountInfoInteger(ACCOUNT_LOGIN));
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+

Результат

2020.10.28 17:23:05.725 Test (EURUSD,M1)        Stop 600....
2020.10.28 17:23:06.306 Test (EURUSD,M1)        Start 600....
2020.10.28 17:23:17.478 Test (EURUSD,M1)        Stop 535....
2020.10.28 17:23:18.156 Test (EURUSD,M1)        Start 535....
 
Vladimir Pastushak:

При смене торгового счета REASON_ACCOUNT ожидалось получать прошлый счет и завершать работу именно с ним, по логике вещей, но нет если счет изменился то уже в деините при REASON_ACCOUNT получаем новый номер.

По логике программа должна закончить работу с текущими данными и при новом вызове уже передавать новые данные и не менять данные в процессе работы...

Это не ошибка, а потому поведение меняться не будет. Просто учитывайте данную особенность.

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