Fehler, Irrtümer, Fragen - Seite 1784
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Siehe hier - Programmablauf
Eine Übersicht über die Programme in MQL5 finden Sie in der nachstehenden Tabelle:
Programm
Ausführung
Hinweis
Drehbuch
In einem eigenen Thread so viele Skripte, wie es Ausführungs-Threads für sie gibt
Ein Skript in einer Schleife kann die Arbeit anderer Programme nicht unterbrechen
Experte
In einem eigenen Thread, so viele Experten - so viele Ausführungsthreads für sie
Ein Experte in einer Schleife kann die Arbeit anderer Programme nicht stören
Indikator
Ein Ausführungsstrang für alle Indikatoren auf einem Symbol. So viele Indikatorsymbole - so viele Ausführungsstränge für sie
Endlosschleife in einem Indikator stoppt alle anderen Indikatoren für dieses Symbol
Forum für Handel, automatisierte Handelssysteme und Strategietests
Wanzen, Wanzen, Fragen
Slawa, 2017.02.06 07:22
Aber auch hier kann man sich nicht darauf verlassen, dass der Deinit-Befehl auf M5 vor dem Init-Befehl auf M15 verarbeitet wirdLeider bin ich mit diesem Format nicht vertraut.
Das Experiment hat gezeigt, dass die Zahl im grafischen Puffer nach denselben Regeln dargestellt wird wie die doppelte Zahl - d. h. es ist nicht möglich, eine so lange Zahl durch den grafischen Puffer zu leiten - frustrierend.
Leider kann der grafische Puffer nur eine Zahl mit 10 Ziffern aufnehmen.
Übrigens, warum gibt es eine Grenze von 4 Dezimalstellen?
Kompilierungsfehler (oder vielmehr keine Fehlermeldung)
public:
int i;
};
class B : public A {};
class C : protected A {};
class D : protected B {};
void OnStart()
{
C c;
Print( c.i ); //Error: 'i' - protected member access error
D d;
Print( d.i ); //нормально???
}
Ausführungsfehler: EX5-Laden fehlgeschlagen
typedef void (*f)( A*);
class A {
virtual void g( A *a ) {}
f ff;
};
void OnStart() { Print( __FUNCTION__ ); }
Fehler bei der Ausführung
void f( B* );
class A { public:
virtual ~A() { f((B *)&this ); } //(*)
virtual void g( A* ) { Print( __FUNCTION__ ); }
};
class B : public A { public:
virtual void g( A* ) { Print( __FUNCTION__ ); }
};
void f( B *b ) { b.g( b ); }
void OnStart() //(1)
{
B *b = new B;
delete b;
}
Ergebnis: falsches Casting von Zeigern in (*)
Und wenn
Ergebnis: B::g
aber was ist der grundlegende Unterschied zwischen OnStart (1) und (2)?
Außerdem ist das Ergebnis eines ähnlichen Codes in C++: A::g
A100:
Wofür würde ein virtueller Destruktor wie der in Ihrem Beispiel oben sein? Kann sie im Nachkommen überschrieben werden?
Wofür würde ein virtueller Destruktor wie der in Ihrem Beispiel oben sein? Kann sie im Nachkommen überschrieben werden?
In MQL ist es immer virtuell, auch wenn es nicht ausdrücklich angegeben ist
Sie haben also die Frage nicht beantwortet: Wozu?
Wenn alle Destruktoren in MQL virtuell sind, dann reduziert sich die Frage, wofür ein virtueller Destruktor ist, auf die Frage, wofür ein Destruktor ist? Und das ist eine zu allgemeine Frage.