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

 
A100 #:
Ошибка при выполнении:

Было:   5

Стало: 10

Двойной (!) const не спас от изменения значения

Похоже, из-за этой путаницы (+typedef) идет выбор неправильной сигнатуры.

class A
{
public:
  void f() const { Print(typename(&this)); } // "class A const *" - константный указатель на неконстантный объект.
};

void OnStart()
{
  const A* const a1 = NULL; // Константный указатель на константный объект.
  A* const a2 = NULL;       // Константный указатель на неконстантный объект.
  const A* a3 = NULL;       // Неконстантный указатель на константный объект.
  
  const A a; // Констанстый объект
  A b;       // Неконстатный объект.
  
  Print(typename(a1)); // class A const *
  Print(typename(a2)); // class A const *
  Print(typename(a3)); // class A const *
  Print(typename(&a)); // class A const *  
  a.f();               // class A const *
  b.f();               // class A const *  
}
 
fxsaber #:

Похоже, из-за этой путаницы (+typedef) идет выбор неправильной сигнатуры.

Нет с a2 - это ошибка сама по себе была:

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

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

A100, 2023.11.22 10:04

Ошибка при выполнении:
class A {};
void OnStart()
{
                   int const        i = NULL;
    Print(typename(int) == typename(i)); //(1)
                   A*  const        a = NULL;
    Print(typename(A*)  == typename(a)); //(2)
}
Результат в (1) случае: true, а во (2) - false. A какая принципиальная разница?
и к слову - как показывает Ваш пример - до сих пор не исправлена!
 

Знатоки, столкнулся с задачей посчитать сумму выведенных средств с торгового счета.

Но что то никак не получается. 

DEAL_TYPE_BALANCE - не помогает.

Может я гдето что то потерял ?

 
fxsaber #:

К сожалению, она не подойдет для этого случая.

Так и знал, что это скажите.))
Для данной задачи надо использовать Round.
Ибо int(122649.999999999) это 122649
Универсальной функции нет. Под каждую задачу своя функция.
Ваш вариант далеко не универсальный. 
 
Aleksandr Slavskii #:

Проверил)

Получилась в два с половиной раза штатная медленнее. 

Да, понятное дело что функции разные.
Но в 99.99 % задач лично мне нужно округление для получения int, а не double. Например индекса в массиве или целочисленной координаты. 
При работе с канвасом Round() может использоваться миллионы раз в секунду. Поэтому такое использование даёт хороший прирост производительности.
 

Обратил внимание, что если один и тот же .mq5 файл в папке Индикаторы сначала скомпилировать как Советник, а потом как Индикатор, то иконка в Навигаторе (с Советника на Индикатор) - не изменится до перезагрузки Терминала, даже если нажать Обновить

//Test.mq5
void OnInit() {}
//Test.mq5
void OnInit() {}
int OnCalculate (const int, const int, const int, const double&[] ) { return 0; }
что может вызвать путаницу
 
A100 #:

Обратил внимание, что если один и тот же .mq5 файл в папке Индикаторы сначала скомпилировать как Советник, а потом как Индикатор, то иконка в Навигаторе (с Советника на Индикатор) - не изменится до перезагрузки Терминала, даже если нажать Обновить

что может вызвать путаницу

одинаковые названия при одинаковых расширениях  в разных папках это зло. конечно разнести расширениями было дальновидно бы. но как есть. Обновить пути вряд ли обновляет к иконке. Это внешнее к файлу свойство, обновить внутри файла обновляет.

 
Valeriy Yastremskiy #:

одинаковые названия при одинаковых расширениях  в разных папках это зло. конечно разнести расширениями было дальновидно бы. но как есть. Обновить пути вряд ли обновляет к иконке. Это внешнее к файлу свойство, обновить внутри файла обновляет.

Имеются ввиду внутренние Папки во вкладке Навигатор и внутренние иконки

 
A100 #:

Имеются ввиду внутренние Папки во вкладке Навигатор и внутренние иконки

думается это винда путает. и новые пути только после перезагрузки. У меня так же пути к базам данных к серваку при смене айпи сервака по батнику перегрузкой батника не решается, доступ не восстанавливается, только перегрузкой компа.

 
Valeriy Yastremskiy #:

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

Windows здесь не при чем - это все внутри Терминала:


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