Fehler, Irrtümer, Fragen - Seite 881

 
sergeev:
wie viele kennst du?
Es gelang, einige weitere Klassen hinzuzufügen - aber dann wiederholte sich alles - ich versuche, das Problem zu lokalisieren - ziemlich komplexe Vererbung und Überladung - ich werde Bericht erstatten
 
A100:
Es gelang, einige weitere Klassen hinzuzufügen - aber dann wiederholte sich alles - ich versuche, das Problem zu lokalisieren - ziemlich komplexe Vererbung und Überladung - ich werde Bericht erstatten
Keine identischen Namen bei #define-Funktionen?
 
sergeev:
c #define keine identischen Namen mit Funktionen?
Die Symptome traten auf folgende Weise auf: Irgendwann wurde der Klasse eine neuevirtuelle Funktion hinzugefügt, einschließlich des einfachsten Typs
virtual bool ABC12345() const { return ( true ); }

begann, einen Fehler zu verursachen: ',' - unerwartetes Token..., mit einem Verweis auf eine Zeile in einer anderen Klasse - viel früher als der angegebene Zusatz, bei dem es vorher keine Fehler gab und ex5 problemlos funktionierte. Gleichzeitig führte eine ähnliche Ergänzung ohne das virtuelle Schlüsselwort nicht zu Fehlern. Das Ändern von Namen und Parametern hatte keine Auswirkungen. Dann habe ich versucht, nur - eine einfache Klasse (ohne die oben genannten) hinzufügen

class A {};

gleicher Fehler. Das Paradoxon, aber nach Hinzufügen der 7. einfachen Klasse verschwand der Fehler. Und es waren nicht die Namen der Klassen, die sich auswirkten - nur ihre Anzahl. Beim Hinzufügen des Beispiels mit virtual trat der Fehler jedoch erneut auf. Von #define gab es nur

#define PrintNotEmpty( a, b )   _PrintNotEmpty( b, a )
Die Analyse ergab, dass innerhalb der Funktion mit template eine Variable verwendet wurde, die zuvor als static const string deklariert war. Dies könnte der Grund gewesen sein - nach der Ersetzung durch const string ist der Fehler verschwunden und tritt jetzt nicht mehr auf.
 

Code hinzugefügt - der gleiche Fehler trat erneut auf - kann durch Hinzufügen einer leeren Klasse behoben werden

class B {};
Offenbar gibt es eine kritische Anzahl von ihnen
 

Letztes Ergebnis: frühere Schlussfolgerungen sind nicht korrekt

Um den Fehler verschwinden zu lassen, fügen Sie einfach eine beliebige sinnvolle Zeile (keinen Kommentar) irgendwo in mq5 ein, zum Beispiel

#define XXXXXXXXXXXXX 15
Die virtuellen Funktionen in ex5 laufen bisher reibungslos. Das problematische mq5 wurde bis zur nächsten ME5-Revision aufgehoben
 
Schicken Sie die Problemdatei besser an cd. Es wäre sinnvoller.
 
In einem Monat :) rechtzeitig zu Weihnachten
 
sergeev:
Schicken Sie die Problemdatei besser an cd. Das würde mehr Sinn ergeben.
Dieser Fehler wurde bereits entdeckt und behoben.
 
mql5:
Dieser Fehler wurde bereits entdeckt und behoben.

 

Frage: Ist die minimale (erforderliche) Verzögerung zwischen den Anrufen dokumentiert?

        OrderSend( request, result );
        Sleep( n );
        bool isOK = OrderSelect( result.order );
Die Frage hat mit der Tatsache zu tun, dass bei n = 0 -> isOK = falsch und bei n = 200 -> isOK = wahr ist