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

 
Vitaly Muzichenko:

сенька бери мяч

Похоже ОН :)

 
Kirill Belousov:

сенька бери мяч

Похоже ОН :)

Ничего не понял, но всё равно весело.

 
Vitaly Muzichenko:

Ничего не понял, но всё равно весело.

Баг.

Не выдается ошибка 4200 при создании дублирующегося объекта на НЕ ТЕКУЩЕМ  (которую-таки дает на текущем - [см. "CURRENT CHART" в логе]) ,

а так же выяснено, что поиск объекта на НЕ ТЕКУЩЕМ чарте занимает до 500 раз больше времени, чем поиск на текущем.

а :) , потому что оказывается, что не у меня одного такое

 
fxsaber:
Правильно ли понимаю, что такие массивы невозможно разумно инициализировать?

И имеют смысл только в качестве входных параметров функций/методов?

class A {
public:
        void f() {}
};
A* const a[10] = { NULL };
void OnStart()
{
        A *aa = new A;
         ((A *)a[ 9 ]) = aa; //нет ошибки при компиляции
               a[ 9 ].f();   //нет ошибки при выполнении
        Print( a[ 9 ] == aa ); //Результат: false
}

Можно подумать что возможно, но как видно из примера - приводит к трудноуловимым ошибкам

 
A100:
((A *)a[ 9 ]) = aa; //нет ошибки при компиляции

Да, баг компилятора здесь, но дальше этого места выполнение не идет - invalid pointer.

Так что, фактически, инициализация невозможна.

 
fxsaber:

Да, баг компилятора здесь, но дальше этого места выполнение не идет - invalid pointer.

Тогда баг еще и в том, что для 32-разрядных версий (у меня именно такая) выполнение без ошибок. invalid pointer - только если дополнить класс членом, например int i

 
A100:

Тогда баг еще и в том, что для 32-разрядных версий (у меня именно такая) выполнение без ошибок. invalid pointer - только если дополнить класс членом, например int i

Видимо, Вы на MT4 тестили, но там и билд пониже.

 
Kirill Belousov:

Баг.

Не выдается ошибка 4200 при создании дублирующегося объекта на НЕ ТЕКУЩЕМ  (которую-таки дает на текущем - [см. "CURRENT CHART" в логе]) ,

а так же выяснено, что поиск объекта на НЕ ТЕКУЩЕМ чарте занимает до 500 раз больше времени, чем поиск на текущем.

а :) , потому что оказывается, что не у меня одного такое

Объект не создаётся сразу по вызову функции. Посылается асинхронная команда чарту. Для своего графика у нас есть возможность произвести предварительную проверку. Для чужого графика такой возможности нет - вернее, есть, но она очень дорогая.

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

 
fxsaber:

Видимо, Вы на MT4 тестили, но там и билд пониже.

MT5\1653\32\Win10 - у меня доходит до строки //Результат: false

Если в Вас тоже 32-разрядная и возникает invalid pointer - тогда вообще какая то случайная ошибка  

СервисДеск пишет что: Функция f пустая и вызов вырезается оптимизатором, как и вызов оператора копирования

Но если

        void f() { Print( __FUNCTION__ ); }

то Результат:

2017.09.26 14:03:55.853 Demo (GBPUSD,M15) A::f
2017.09.26 14:03:55.853 Demo (GBPUSD,M15) false
по сути не меняется

 
A100:

Если в Вас тоже 32-разрядная - тогда вообще какая то случайная ошибка

Нет, запускал Win7x64.

СервисДеск пишет что: Функция f пустая и вызов вырезается оптимизатором, как и вызов оператора копирования из п. 1

Но если

то ничего не меняется

Сталкивался, когда СД быстро отвечают без проверок. И для 90% заявок это, наверное, правильно, т.к., скорее всего, большинство заявок не из-за багов, а по незнанию. Прошу внимательнее посмотреть - срабатывает.