Fehler, Irrtümer, Fragen - Seite 2565

 
Igor Makanu:

Ich werde nicht mit Ihnen streiten.

Ich habe beschlossen, das Problem zu beschreiben, das wir diskutieren. Übrigens sieht das Verhalten von MQL mehr und mehr wie C# aus, der Code lässt sich nicht kompilieren

//+------------------------------------------------------------------+
class A
{
private:
   int               count;
public:
                     A():count(0) {}
   static void       inc()        { count++; }

};

A a;
//+------------------------------------------------------------------+
void OnStart()
{
   a.inc(); //code generation error 
   A::inc();
   
}
//_______________________________________________________________________

Ich habe die Inc()-Methode implementiert - sie funktioniert mit geschützten Feldern

wenn ich einen statischen Modifikator hinzufüge - wo sollte der Compiler aufhören zu prüfen - ich habe beschlossen, dass ich einen Einstiegspunkt für ein Objekt außerhalb des Geltungsbereichs brauche?

 
Igor Makanu:

Wenn Sie eine statische Methode/ein statisches Feld geschrieben oder ein ::: angewendet haben, verlassen Sie sich nicht auf den Compiler

Bugs passieren. Ich schreibe Code wie bisher: this, ::, const, static, private, public, protected werden überall dort eingesetzt, wo es möglich ist.

Ich brauche sie vor allem für ein schnelles Verständnis meines Codes. Zweitens möchte ich, dass der Compiler mir beim Schreiben meines Codes hilft. Das hilft mir sehr.


Gestern war ich zum ersten Mal in einer solchen Situation. Ich habe einen 5Kb großen Code geschrieben, von dem ein Teil aus verschiedenen Fragmenten kopiert und eingefügt wurde. Und bei der ersten Kompilierung trat kein einziger Fehler oder eine Warnung auf. Ich war überrascht.

 
Igor Makanu:

Ich habe beschlossen, das Problem, über das wir sprechen, zu beschreiben

//+------------------------------------------------------------------+
class A
{
private:
   int               count;
public:
                     A():count(0) {}
   static void       inc()        { count++; } // Здесь ошибка, о которой компилятор сейчас не сообщает.

};
 
Igor Makanu:

Ich habe mich entschlossen, das Problem zu beschreiben, das wir hier diskutieren. Übrigens sieht das Verhalten von MQL mehr und mehr wie C# aus, der Code lässt sich nicht kompilieren

die inc()-Methode - sie funktioniert mit geschützten Feldern

Wenn ich einen statischen Modifikator hinzufüge - wo sollte der Compiler aufhören zu prüfen - habe ich eine Entscheidung getroffen, dass ich einen Einstiegspunkt zu einem Objekt außerhalb des Anwendungsbereichs benötige, richtig?

Ihre Zählvariable ist nicht statisch.

Woher weiß eine statische Funktion, zu welchem Objekt diese Variable gehört?

 
Koldun Zloy:

Die Anzahl Ihrer Variablen ist nicht statisch.

Woher soll eine statische Funktion wissen, zu welchem Objekt diese Variable gehört?

nicht ein Prinzip, ich meine, dass jede Implementierung der Arbeit mit statischen Methoden keine vollständige Kontrolle durch den Compiler haben wird, und die gesamte Verantwortung für die Kontrolle fällt auf den Programmierer

ok, egal, denn es spielt keine Rolle - ich habe an einem Tag zweimal das Gleiche geschriebenhttps://www.mql5.com/ru/forum/1111/page2564#comment_13249284

 
Igor Makanu:

Ich meine damit, dass jede Implementierung statischer Methoden nicht vollständig vom Compiler überprüft wird und dass die gesamte Verantwortung für die Kontrolle beim Programmierer liegt.

Wo haben Sie das gelesen?

Haben Sie es selbst erfunden und ohne Unterbrechung wiederholt?

 
Andrey Barinov:

Wo haben Sie das gelesen?

Hast du dir das selbst ausgedacht und wiederholst es immer wieder?

Ich habe mir das nicht ausgedacht, es ist meine Meinung... möchte im Prinzip alle Arbeiten mit Statik nur innerhalb der Statik wie in C# abschließen - dann gibt es keine Fragen oder Fehler ;)

 
Slava:

Ein paar Fragen zur Plattform:

1. Wird ein zulässiger Handelsbereich für VP über MOEX hinzugefügt (z.B. EURRUB_TOM)? Im Moment ist es nicht möglich, mit Sicherheit zu wissen, ob ein Limit gesetzt wird, da es keinen Zugang zu der Spanne (maximal und minimal mögliche Preise) gibt. Bitte hinzufügen.

2. Ist es möglich, dem Terminal und dem Meta-Editor einen automatischen Speicherstatus alle N Minuten hinzuzufügen? Sehr mangelhaft, da man bei einer plötzlichen Unterbrechung der Verbindung wieder in den Zustand beim Start des Programms zurückfällt und alle Änderungen verloren gehen! Sehr anstrengend!

 

MQ, seid ihr mit der Lagerung einverstanden? Es dauert 10-20 Sekunden, eine Datei zu übertragen. Früher ging das sofort...

Hinzugefügt: manchmal bleibt die Übertragung einfach hängen...

 
Im Indikator auf dem Chart mit dem benutzerdefinierten Tool gibt der Aufruf der Funktion CopyBuffer(mit dem Handle der üblichen Maske für echte Symbole, z. B. für EURUSD) den Fehler 4806 zurück. Das benutzerdefinierte Symbol basiert auf der Formel XAUUSD/31,1035*USDRUB. Derselbe benutzerdefinierte Indikator mit denselben Einstellungen funktioniert auf einem echten Diagramm (wie XAUUSD, GBPUSD usw.) problemlos. Was könnte das Problem sein?
Grund der Beschwerde: