Geben Sie mir SetLastError!!! - Seite 4

 
sergeev:

Sie haben immer noch nicht geschrieben, wie Ihr Vorschlag zur Verbesserung der MMS beitragen wird. Bis jetzt sind es nur bloße Anfragen, die nur Sie brauchen, zu einem unklaren Zweck.

Ich habe bereits am Anfang geschrieben, dass MQL5 diesen Effekt hat, während er in MQL4 verbessert werden kann, indem man last_error sichtbar macht. Auch hier habe ich das Problem zum zweiten Mal mit zwei selbstgebauten Funktionen gelöst. Es handelt sich nicht um last_error, sondern um den ersten und letzten Fehler sowie um die Möglichkeit benutzerdefinierter Fehlercodes wie in MQL5.
 
Roger:

Das ist nicht gut, denn wenn bei einem früheren Vorgang ein Fehler auftrat und dieser nicht behandelt wurde, dann wird, wenn beim aktuellen Vorgang kein Fehler auftritt, der vorherige behandelt.

Ja, alles ist in Ordnung, wenn Sie GetLastError nicht aufrufen, sondern nur von einer Funktion aus, die einen gefälschten Fehler zurückgibt und bereits den Code eines möglichen früheren Fehlers in einen neuen geändert hat!
 
vit46:

Ja, alles ist in Ordnung, wenn Sie GetLastError nicht aufrufen, sondern nur von einer Funktion aus, die einen gefälschten Fehler zurückgibt und bereits den Code eines möglichen früheren Fehlers in einen neuen geändert hat!

Indem Sie den Fehler in einer zusätzlichen Funktion überprüfen, setzen Sie ihn einfach außer Kraft. Wenn Sie jedoch Codestellen haben, an denen Sie nicht auf einen Fehler prüfen, der aber auftreten könnte, können Sie auf einen unangemessenen Fehler stoßen.
 
Roger:

Indem Sie den Fehler in der Zusatzfunktion überprüfen, löschen Sie ihn.


Nein, ich werde es nicht löschen:

// глобально видимая переменная для всей программы
int last_error_fifo = 0;

int GetError()
   {
   if (last_error_fifo == 0)
      {
      last_error_fifo = GetLastError();
      }
   return(last_error_fifo);
   }

void SetError(int errcode)
   {
   last_error_fifo = errcode;
   // Это можно делать и напрямую, но только установку ошибки или сброс.
   // Для чтения ошибки только GetError() иначе GetLastError не сработает.
   }
 

Kann jemand empfehlen, die meisten Decent (Ihrer Meinung nach) Fehlerbehandlung Funktion?

 
charter:

Kann jemand empfehlen, die meisten Decent (Ihrer Meinung nach) Fehlerbehandlung Funktion?


Es gibt nicht viel zur Auswahl ... mach es mit dem, was du hast... oder keinen unbedingten Aufruf von GetLastError machen
 
vit46:


Nein, ich setze sie nicht zurück:


Was ist das?

last_error_fifo = GetLastError();
 
vit46:

Es ist nicht wirklich eine Wahl ... Wir müssen mit dem auskommen, was wir haben... oder keinen unbedingten Aufruf von GetLastError zu machen

Nein, ich spreche nicht von den Fehlerinformationen, sondern von dem "richtigen Verhalten" des EA, wenn ein Fehler auftritt/erkannt wird.
 
Roger:


Was ist das?


Es handelt sich nicht um eine bedingungslose Nullsetzung, sondern nur, wenn last_error_fifo == 0. Kurz gesagt, es ist dasselbe wie bei Eiern im Profil. prüfen Sie, was die Funktion zurückgegeben hat, bevor Sie auf Fehler prüfen.
 
charter:

Nein, ich spreche nicht von den Fehlerinformationen, sondern von dem "richtigen Verhalten" des EA, wenn ein Fehler auftritt/erkannt wird.

Das hängt von Ihrer Logik ab. Schließlich kann man jeden Fehler behandeln, aber nur die, die in einer bestimmten Situation wichtig sind.
Grund der Beschwerde: