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

 
Комментарии, не относящиеся к этой теме, были перенесены в "Вопросы от начинающих MQL4 MT4 MetaTrader 4".
 
internal error #27
#import "Test.ex5"
        int f();
#import
static int i = Test::f();
 
Николай Никитюк:

Если мне нужно, чтобы в функциях "LongCondition" и "ShortCondition" использовались результаты вычислений из метода TrendTenkan, а у меня до сих пор не получается это сделать. Это значит, что LongCondition должна вызывать TrendTenkan ?

Я могу только подправить явные ошибки: 

for(i=idx+1;i<idx+21;i++)
     {if(DiffKijun(i)>0.0) {value_t=TYPE_TREND_UP; break; return(value_t);}
//здесь явно что-то не так
//return после break не имеет смысла

Откуда что должно вызываться - не знаю 

 

internal error #112

class A;
struct B {
        void f() { a.g(); }
        A *a;
};
void OnStart()
{
        B b;
        b.f();
}
 

В build 1653 ошибка при выполнении не исчезла, а лишь переместилась в другую часть кода:

Cannot find 'f1' in 'Test2.ex5'

//Test.mqh
class B {
        virtual void f() {}
};
class C {
        virtual void g( B& ) {}
};
class A : C {};
#import "Test2.ex5"
        A *f1();
        B *f2();
#import
//Test.mq5
#include "Test.mqh"
void OnStart()
{
        f1();
}
//Test2.mq5
#property library
#include "Test.mqh"
A *f1() export { return NULL; }
B *f2() export { return NULL; }
 

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

#import "Test.ex5"
        void g();   //g(1)
#import
        void g() {} //g(2)
typedef void (*fn)();
void f( fn )       {}
void f( int, int ) {}
void OnStart()
{
        f( Test::g ); //нормально
        f(     ::g ); //error: 'f' - no one of the overloads can be applied to the function call
        f(       g ); //error: 'f' - no one of the overloads can be applied to the function call
//а как иначе указать что g - это g(2) ... и причем здесь overloads ???
        fn gg = g;    //нормально
        f( gg );
}
 

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

class B {};
class A {
template<typename T> void f() const {} //1
template<typename T> void f()       {} //2
        void g() const { f<B>(); } //error: 'f<B>' - call non-const method for constant object
};
А если поменять местами строки (1) и (2) то нормально. А какая разница?
 

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

class B {};
struct A {
template<typename T> void f()       { Print( __FUNCSIG__ ); } //2
template<typename T> void f() const { Print( __FUNCSIG__ ); } //1
        void g()       { f<B>(); }
};
void OnStart()
{
        A a;
        a.g();
}
В результате вызывается метод const (1), а должен не const (2). Если поменять местами (но не индексами) строки (1) и (2) - то вызывается не const - как и ожидалось 
 

Здравствуйте! Подскажите, почему не выполняется простейшее условие:

if ( Bid > High[iHighest(Symbol(),0,MODE_HIGH,30,1)] )

Журнал ошибок не выдаёт. Прописал Comment(Bid); и заметил, что когда Bid становится больше High[...], то его комментирование останавливается.

А условие такого вида выполняется:

if ( Bid > High[10] )
 
giros:

Здравствуйте! Подскажите, почему не выполняется простейшее условие:

Журнал ошибок не выдаёт. Прописал Comment(Bid); и заметил, что когда Bid становится больше High[...], то его комментирование останавливается.

А условие такого вида выполняется:


Весь код приложите, в том что Вы показали ошибок нет..