Fehler, Irrtümer, Fragen - Seite 1923

 
fxsaber:

In der Hilfe wird darauf hingewiesen: Wenn keine Anfangswerte angegeben werden, nehmen die Variablen der statischen Speicherklasse den Anfangswert Null an. Und außerdem - ohne Vorlage ist es OK

 
A100:

Die Hilfe sagt das: Wenn keine Anfangswerte angegeben werden, nehmen die Variablen der statischen Speicherklasse den Anfangswert Null an.

Bei Schablonen habe ich eine ungefähre Vorstellung davon, woher die Beine kommen, und weiß daher, dass es nicht möglich ist, in allen Situationen einfach eine Schablonenlinie hinzuzufügen.

Technisch gesehen ist das wahrscheinlich ein Fehler. Allerdings denke ich, dass der zitierte Text aus der Dokumentation lange vor dem Erscheinen von Vorlagen geschrieben wurde und daher nicht ganz korrekt ist.

 
fxsaber:

Ich glaube allerdings, dass der zitierte Text aus der Dokumentation lange vor der Verfügbarkeit der Vorlagen verfasst wurde und daher etwas ungenau ist.

In der Dokumentation findet sich der gegenteilige Eintrag:"Ein statisches Klassenmitglied muss explizit mit dem gewünschten Wert initialisiert werden". Nur das Template hat keinen Einfluss darauf - es muss also in beiden Fällen (mit und ohne Template) ein Fehler erzeugt werden oder nicht - hierin liegt ein Widerspruch
 
MetaTrader 5 build 1619 started (MetaQuotes Software Corp.)
Microsoft Windows XP (X86 based PC), IE 08.00, Intel Core2 Duo  T7700 @ 2.40 GHz, RAM: 2359 / 3581 Mb, HDD: 17612 / 27784 Mb, GMT+02:00
C:\Program Files\MetaTrader 5

MetaEditor läuft nach dem Update nicht mehr und gibt diesen Fehler aus


1616 funktionierte gut, 1619 nicht.

Im Terminalprotokoll nach Drücken von F4

2017.07.07 12:00:30.109 Error   MetaEditor not found
2017.07.07 12:39:54.296 Error   MetaEditor not found
 
A100:

Ich verstehe nicht ganz, worauf Sie IMHO hinauswollen. Nimm Build <= 1596 (32bit) und prüfe (gibt sofort [5-10 Sekunden] auch nur eine Zeile in die .log-Datei aus). Ich habe es vor einer Minute überprüft.

[welcher cache? welcher immer? da war doch irgendwo was mit irgendwas!?!]

Ich spreche von der Registerkarte "Experten" und dem Ordner "MQL5\Logs\".

IMHO wurde es aus einer angeborenen Feinfühligkeit heraus geschrieben - ein subtiler Hinweis auf die Widersprüchlichkeit unserer Erfahrungen. Für mich sind 5-10 Sekunden keineswegs unmittelbar. Und diese Verzögerung ist nach meinen Beobachtungen nicht immer auf Sekunden beschränkt.

[Cache ist Cache, immer, bis jetzt, die Frage des verzögerten Loggings wurde bereits in diesem Forum diskutiert - wenn es für Sie wirklich wichtig ist - suchen Sie danach].

 
Stanislav Korotky:

Für mich sind 5-10 Sekunden keineswegs unmittelbar. Und diese Verzögerung ist nach meinen Beobachtungen nicht immer auf Sekunden beschränkt.

Früher waren es 5-10 Sekunden (in manchen Fällen vielleicht mehr), und jetzt - ohne das Menü "Ansicht" - werden die Protokolle überhaupt nicht aktualisiert (!) (da der Beginn des Tages mehrere Stunden zurückliegt und die Datei Null ist, während die Registerkarte "Experten" neue Zeilen für den Tag enthält). Die normale Protokollierung wird zugunsten einer mythischen Beschleunigung des Terminals um "einige Nanosekunden" unterbrochen.
 

Kompilierungsfehler

struct A {
        A() {}
        int aa;
};
struct B {
        static A a;
};
A B::a;
template<typename T>
struct C {
        static T a;
};
template<typename T>
T C::a;
void OnStart()
{
        B    x1;
        Print( x1.a.aa ); //нормально
        C<A> x2;
        Print( x2.a.aa ); //unresolved static variable 'C<A>::a'
}
Klingt wie der vorige Fall https://www.mql5.com/ru/forum/1111/page1943#comment_5410554, aber Sie können den Fehler hier nicht durch die Angabe von T C::a = 0; // A::A( int ) fehlt
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2017.07.06
  • www.mql5.com
Форум алго-трейдеров MQL5
 

Fehler bei der Ausführung

void OnStart()
{
        string text = "1234\0";
        Print(  "1>'",    text, "'" ); //не выводит завершающую кавычку
        printf( "2>'%s'", text );      //нормально
}

Ergebnis:

1>'1234
2>'1234'

 

Kompilierungsfehler

#define  MACRO( x )      Print( x )
void OnStart()
{
        MACRO/**/( 10 ); //error: '' - argument expected for the function-like macro
}
 

Das Gegenteil wurde erwartet

class A {};
struct B {
        const A *       a1;   //(1) есть сообщение об ошибке
              A * const a2;   //(2) нет сообщения
};
void OnStart()
{
        B b1;
        B b2;
        b2 = b1; //error: '=' - not allowed for objects with protected members or inheritance
}
  1. Wenn struct B nur Zeile (1) enthält, wird eine Fehlermeldung ausgegeben
  2. Wenn Struktur B nur Zeile (2) enthält - keine Fehlermeldung
  3. Das Gegenteil wurde erwartet

Außerdem wurde in beiden Fällen (1. und 2.) kein Fehler erwartet.

void OnStart()
{
        B b1;
        B b2 = b1; //error: '=' - not allowed for objects with protected members or inheritance
}