Fehler, Irrtümer, Fragen - Seite 2474

 
fxsaber:

Wie wählt man zwischen der Verwendung von Vorlagen und void*?

Es gibt keinen speziellen Ansatz, es ist nur eine Frage der Intuition.

 
Leider sind die Funktionszeigertypen in MT4/MT5 zur Zeit sehr begrenzt und aufgrund einiger Mängel nicht praktikabel:
#(nicht behoben in MT5(build 2060))"Kompilierungsfehler bei wiederholter Verwendung der gleichen Funktionssignatur innerhalb von typedef".
#(nicht behoben in MT5(build 2060))"Bei der Arbeit mit typedef wird bei der Verwendung einer Vorlagenfunktion mit expliziter Spezialisierung kein Code für diese Vorlagenfunktion generiert".


In Anbetracht der anstehenden Namespace-Implementierung sollten Sie in Erwägung ziehen, die Unterstützung für dieses Verhalten als Teil der Fehlerkorrekturen in der nächsten C++ zu implementieren:
//#include <iostream>

template<typename T>
class A{
public:
    typedef void (*callback)(T&);   //class namespace for function pointer type
    callback f_ptr;
    T data;
};

template<typename T>
class B{
public:
    typedef void (*callback)(T&);   //class namespace for function pointer type
    callback f_ptr;
};

template<typename T>
void func(T& value){
    ++value;
}


void OnStart(){
//int main(){
    A<int> a;
    B<int> b;
    
    a.f_ptr = func<int>;      // automatic code generation of templates functions
    b.f_ptr = a.f_ptr;        // assignment operation for function pointers with the same function signatures and different function pointer types.
    
    int x = 1;
    b.f_ptr(x);
    printf("%d\r\n", x);                  //2
    printf("%d\r\n", b.f_ptr == a.f_ptr); //1     // equal operation for function pointers with the same function signatures and different function pointer types.
}
 

Hallo! Bitte beachten Sie das Thema

https://www.mql5.com/ru/forum/314275

Kurz gesagt, das Prüfgerät berechnet einen Spielraum, der nicht mit dem in den Symboleinstellungen festgelegten Spielraum übereinstimmt
[bug] Неправильная Margin при тестировании на custom symbol
[bug] Неправильная Margin при тестировании на custom symbol
  • 2019.05.25
  • www.mql5.com
Привет! Создал кастомный символ с параметрами, скопированными из реального Si-3.19. См. скриншоты. Загрузил для него историю...
 

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Neue Version der Plattform MetaTrader 4 build 1170

fxsaber, 2019.05.28 12:10

Ist dies ein Fehler im MT4-Compiler?
#property strict

void Func( int &[] ) {}
void Func( int &[][2] ) {} // 'Func' - function already defined and has body

void OnStart()
{
  int Array1[];
  int Array2[][2];
  
  Func(Array1);
  Func(Array2); // 'Array2' - invalid array access
}


Im MT5 gibt es damit kein Problem. In MT4 gibt es keine Möglichkeit, die Funktion zu überladen.

 

Kleines Missgeschick in MT 4 in MT 5 nicht überprüft...


 

Forum zum Thema Handel, automatische Handelssysteme und Strategietests

Neue Version der Plattform MetaTrader 4 build 1170

fxsaber, 2019.05.28 14:24

Ich habe einen ungewohnten Unterschied zwischen MT4 und MT5 entdeckt. Ist dies ein Fehler in MT4?
#property strict

bool Print2( const string Str )
{
  Print(Str);
  
  return(true);
}

void Func()
{
  static bool b = Print2(__FUNCSIG__); // MT4 - вызывается, MT5 - нет.
}

void OnStart() {}
 
fxsaber:

Five hat eine ordnungsgemäße Initialisierung der Statik vorgenommen. Beim ersten Zugriff.

Vier waren es nicht. Und es ist nicht abzusehen, wann wir das tun werden.

 

Build 2062: Fehler 5305 beim Erstellen eines benutzerdefinierten Symbols.

Im Jahr 2060 ist alles in Ordnung.

Ich erinnere mich, dass es in MT4 einen Befehlszeilenschlüssel /skipupdate gab

Gibt es etwas Ähnliches im MT5? Wie kann ich Updates deaktivieren?

 

fxsaber:

MT4 wird aufgerufen, MT5 nicht.

Sie scheinen mit einem alten Compiler zu kompilieren. Kompilieren Sie mit einem modernen Compiler (in MT5 enthalten), und alles wird gut sein.
 
Alexey Navoykov:
Sieht so aus, als ob Sie mit einem alten Compiler kompilieren. Kompilieren Sie mit einem modernen Compiler (der mit MT5 kommt) und alles wird gut sein.

Zusammengestellt bis 1966. Versucht 2062 in MT4 - funktioniert korrekt. Ich danke Ihnen!

Es ist schade, dass es keine Möglichkeit gibt, das zu übertreffen.