Können Sie mir sagen, wie ich mit MQL4/5 Informationen aus einer E-Mail oder SMS lesen kann? Ich erhalte zum Beispiel ein Informationssignal per E-Mail, mein Expert Advisor liest es und öffnet/schließt die Position.
class CBar { };
class CFoo : public CBar { };
voidOnStart()
{
CBar bar;
//--- динамическое приведение типа указателя *bar к указателю *foo разрешено
CFoo *foo = dynamic_cast<CFoo *>(&bar); // критической ошибки выполнения не возникнет Print(foo); // foo=NULL //--- попытка явного приведения ссылки объекта типа Bar к объекту типа Foo запрещено
foo=(CFoo *)&bar; // возникнет критическая ошибка выполненияPrint(foo); // эта строка не будет выполнена
}
Ich erinnere mich, dass es möglich war, (in memcpy Stil) zu einfachen Strukturen zu kopieren, aber meine Struktur ist nicht einfach.
Neue Version der MetaTrader 5 Plattform Build 1640: Erstellen und Testen von eigenen Finanzinstrumenten
MQL5: Automatische Erzeugung des impliziten Kopieroperators für Objekte von Strukturen und Klassen hinzugefügt. Jetzt erzeugt der Compiler automatisch Kopieroperatoren, die es ermöglichen, einfache Sätze für Objekte wie b=a zu schreiben:
class Foo
{
int value;
public:
string Description(void){returnIntegerToString(value);};
//--- конструктор по умолчанию
Foo(void){value=-1;};
//--- конструктор с параметрами
Foo(int v){value=v;};
};
//+------------------------------------------------------------------+//| структура, содержащая объекты типа Foo |//+------------------------------------------------------------------+struct MyStruct
{
string s;
Foo foo;
};
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---
MyStruct a,b;
Foo an_foo(5);
a.s="test";
a.foo=an_foo;
Print("a.s=",a.s," a.foo.Description()=",a.foo.Description());
Print("b.s=",b.s," b.foo.Description()=",b.foo.Description());
//---Print("b=a");
b=a;
//---Print("a.s=",a.s," a.foo.Description()=",a.foo.Description());
Print("b.s=",b.s," b.foo.Description()=",b.foo.Description());
/*
Результат выполнения;
a.s=test a.foo.Description()=5
b.s= b.foo.Description()=-1
b=a
a.s=test a.foo.Description()=5
b.s=test b.foo.Description()=5
*/
}
Der implizite Operator kopiert Objekte auswendig.
Wenn ein Mitglied ein Objekt ist, wird der diesem Objekt entsprechende Kopieroperator aufgerufen.
Handelt es sich bei dem Mitglied um ein Array von Objekten, so wird das empfangende Array vor dem Aufruf des entsprechenden Kopieroperators für jedes Element mittels ArrayResize auf die erforderliche Größe vergrößert oder verkleinert.
Handelt es sich bei einem Mitglied um ein Array von einfachen Typen, wird die Funktion ArrayCopy zum Kopieren verwendet.
Wenn ein Mitglied ein Zeiger auf ein Objekt ist, wird der Zeiger selbst kopiert, nicht das Objekt, auf das er zeigt.
Falls erforderlich, können Sie das Verhalten außer Kraft setzen und anstelle des impliziten Kopieroperators durch Überladen eine eigene Variante erstellen.
Danke, das macht jetzt Sinn. Ich weiß nicht, ob ich mich freuen soll oder nicht. Die Kompatibilität mit dem alten Code ist nicht mehr gegeben. Es ist eine gute Idee, die Aktivierung der neuen Funktionalität bei solch bedeutenden Änderungen irgendwie zu erzwingen (über Kompilierungsschalter oder #pragma).
Nun stellt sich heraus, dass auto_ptr im neuen Code kopiert werden kann (es sei denn, der Kopieroperator/Konstruktor ist stummgeschaltet), was zu mehreren Löschungen eines einzigen Zeigers führt.
Wie kann ich MT4 herunterladen? Ich lade die Datei mt4setup.exe herunter, installiere sie, aber die Plattform installiert mt5. Wo kann ich mt4 bekommen?
Der Standard-Kopieroperator wird ausgelöst.
Wenn es nicht schwierig ist, wo kann ich es lesen?
Können Sie mir sagen, wie ich mit MQL4/5 Informationen aus einer E-Mail oder SMS lesen kann? Ich erhalte zum Beispiel ein Informationssignal per E-Mail, mein Expert Advisor liest es und öffnet/schließt die Position.
Der Standard-Kopieroperator wird ausgelöst.
Ich habe dies sogar in den Dokumenten gefunden (beachten Sie die 3. Zeile von unten):
https://www.mql5.com/ru/docs/basis/types/casting
Ich erinnere mich, dass es möglich war, (in memcpy Stil) zu einfachen Strukturen zu kopieren, aber meine Struktur ist nicht einfach.
Ich erinnere mich, dass es möglich war, in einfache Strukturen zu kopieren (im Stil von dumb memcpy), aber ich habe keine einfache Struktur.
MQL5 hat sich geändert.
MQL5 hat sich geändert.
Forum zum Thema Handel, automatische Handelssysteme und Testen von Handelsstrategien
Die neue Version von MetaTrader 5 build 1640: Erstellen und testen Sie Ihre eigenen Finanzinstrumente
MetaQuotes Software Corp., 2017.07.19 18:03
Neue Version der MetaTrader 5 Plattform Build 1640: Erstellen und Testen von eigenen Finanzinstrumenten
Der implizite Operator kopiert Objekte auswendig.
Falls erforderlich, können Sie das Verhalten außer Kraft setzen und anstelle des impliziten Kopieroperators durch Überladen eine eigene Variante erstellen.
fxsaber
Danke, das macht jetzt Sinn. Ich weiß nicht, ob ich mich freuen soll oder nicht. Die Kompatibilität mit dem alten Code ist nicht mehr gegeben. Es ist eine gute Idee, die Aktivierung der neuen Funktionalität bei solch bedeutenden Änderungen irgendwie zu erzwingen (über Kompilierungsschalter oder #pragma).
Zum Beispiel, mein auto_ptr:
Nun stellt sich heraus, dass auto_ptr im neuen Code kopiert werden kann (es sei denn, der Kopieroperator/Konstruktor ist stummgeschaltet), was zu mehreren Löschungen eines einzigen Zeigers führt.
Datei MQL5\Include\Controls\SpinEdit.mqh
int MaxValue(void) const { return(m_min_value); }
Wie kann ich MT4 herunterladen?
Ich lade die Datei mt4setup.exe herunter, installiere sie, aber die Plattform installiert mt5. Wo kann ich mt4 bekommen?
Ich lade die Datei mt4setup.exe herunter, installiere sie, aber die Plattform installiert mt5. Wo kann ich mt4 bekommen?