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

 
Nikolai Semko:

1881

Исправили с 1886 билда.

Nikolai Semko:
И еще. Правда я не уверен. 
Год назад таких проблем вроде не существовало.

Вы просто не видели проблем.

Когда добавили функции iTime, iOpen, iHigh etc, которые на самом деле являются вырожденными CopyTime, CopyOpen, CopyHigh etc, увидели, что бывают случаи, когда самые последние данные ещё не подгружены, а функции возвращают результат. В случае с i-Функциями это оказалось критично.

Сейчас всё должно работать правильно и быстро. Дождитесь официального билда.

 
Slava:

Исправили с 1886 билда.

Вы просто не видели проблем.

Когда добавили функции iTime, iOpen, iHigh etc, которые на самом деле являются вырожденными CopyTime, CopyOpen, CopyHigh etc, увидели, что бывают случаи, когда самые последние данные ещё не подгружены, а функции возвращают результат. В случае с i-Функциями это оказалось критично.

Сейчас всё должно работать правильно и быстро. Дождитесь официального билда.

Понял, спасибо. 
Т.е текущий доступный билд 1881? Или я что-то пропустил?
 
Nikolai Semko:
Понял, спасибо. 
Т.е текущий доступный билд 1881? Или я что-то пропустил?
Текущий доступный билд 1881
 

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

class A {
public:
        template<typename T>
        A* A::f( T )
        {
                int size = ArraySize( i ) + 1;
                Print( __FUNCTION__, ":", size );
                if ( ArrayResize( i, size ) == -1 )
                        Print( __FUNCTION__, ":Error:", GetLastError());
                return &this;
        }
        template<typename T>
        A* A::operator+( T t ) { return f( t ); }
        int i[];
};
void OnStart()
{
        A a;
        a + 0 + 0;
}

Результат:                         Ожидалось:

A::f<int>:1                         A::f<int>:1
A::f<int>:753790661           A::f<int>:2
A::f<int>:Error:4007

А так:

void OnStart()
{
        A a;
        a.f( 0 ).f( 0 );
}

нормально. А какая разница? С чего вдруг размер массива стал равен 753790660 (вместо единицы) и как следствие память вдруг закончилась (4007) ? MT5\1881\32

Более того... если в первом варианте удалить в классе буквально три символа - результат также будет нормальным

 
A100:

Ошибка при выполнении:
С чего вдруг размер массива стал равен 753790660 (вместо единицы) и как следствие память вдруг закончилась (4007) ? MT5\1881\32

MT5\1881\64
debug - все ок.
release - ошибка компиляции "Internal compiler error".

 

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

class A {
        int A::f() { return NULL; } //нормально
        A  *A::g() { return NULL; } //Error: object of 'A' cannot be returned, copy constructor 'A::A(const A &)' not found
};
MT5\1881\32
 
A100:

Зачем внутри class {} так (::) писать?

 

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

class A {
        int A::f();
        template <typename T>
        A*  A::g();
};
int A::f() { return NULL; } //нормально
template<typename T>
A*  A::g() { return NULL; } //Error: 'g' - function already defined and has different type
 
fxsaber:

Зачем внутри class {} так (::) писать?

А почему нет?

class A {
        void A::f() {} //нормально
};
Это примерно как this... хочу пишу... хочу - нет
 
A100:

А почему нет?

Это не причина.

Это примерно как this... хочу пишу... хочу - нет
this сильно помогает при чтении кода и помогает избегать ошибок в некоторых ситуациях.
Причина обращения: