Geben Sie mir SetLastError!!! - Seite 2

 
vit46:


Nein, ich schreibe es so:


In diesem Fall ist es auch falsch.

sehen Sie, dass jede Funktion false oder -1 zurückgibt, wenn sie fehlschlägt.

Das ist es, was Sie verwenden.

int ticket=OrderSend();
if (ticket<0) // и только после этого
{  GetLastError()  }
 
vit46:

Ich vermisse diese Funktion in MT4, was soll ich tun?

Die Funktion GetLastError() wird zurückgesetzt, nachdem Sie ihren Wert gelesen haben. Fügen Sie vor dem gewünschten Vorgang ein zusätzliches Leerzeichen ein.

int err=GetLastError();
OrderSend(...);

if (GetError()==конкретный номер){
         // код обработки сброс ошибки или наоборот
         SetError(0);
         }
else if(...)
 
sergeev:

In diesem Fall ist es auch falsch.

sehen Sie, dass jede Funktion false oder -1 zurückgibt, wenn sie fehlschlägt.

Das sollten Sie verwenden.


Das stimmt! Daran habe ich gar nicht gedacht... denn es gibt einen noch besseren Weg, wie ich :) Ich kann komplexe Funktionen schreiben, die ihre eigenen Fehlercodes erzeugen.
 
Roger:

Die Funktion GetLastError() wird nach dem Lesen ihres Wertes zurückgesetzt. Fügen Sie ein zusätzliches leeres Lesezeichen vor der gewünschten Operation ein.


Das ist es ja, ich möchte nicht jedes Mal ein Lesezeichen vor die gewünschte Operation setzen... Ich habe alle Operationen, die ich brauche, so muss ich GetLastError auf der Linie zu tun:)
 
vit46:

Das ist die Sache: Ich möchte nicht jedes Mal ein Lesen vor die gewünschte Operation setzen... Ich habe alle Operationen, die ich brauche, so muss ich GetLastError auf der Linie zu tun:)

Dann ist es nicht klar, wie Ihre neue Funktion funktionieren soll. Wie könnte sie sich selbst durch die Zeit oder andere Zeichen aktualisieren?
 
Ich würde gerne eine spezielle Variable last_error lesen und schreiben. Behandelt den Fehler, auf Null gesetzt - nicht behandelt - der Fehlercode erreicht das Ende des Programms und wird dort erkannt.
 
vit46:


Nein, ich schreibe es so:

OrderSend(...);

if (GetError()==конкретный номер){
         // код обработки сброс ошибки или наоборот
         SetError(0);
         }
else if(...)
...
...
// и в конце программы
if (GetError()) >0){
        // гдето необработанное исключение или ошибка номер...
        // просто сообщение об ошибке
        }

Nichts für ungut - auch das ist falsch.

Es ist der Operationsfehler, der kontrolliert werden muss: das heißt, was OrderSend (...) zurückgibt, und erst dann, falls erforderlich, GetLastError() aufrufen.

 
Jeder wird auf seine Weise verrückt, nur die Grippe bringt alle zusammen. (Prostokvashino)
 
VladislavVG:


Das ist richtig, es funktioniert wie vorgesehen :) Aber nichts für ungut, ich habe mir Ihre Codes angesehen, ich habe keinen Aufruf von GetLastError() gefunden ... Die erste Fliege, die durch das Fenster fliegt, wird die Zivilisation zerstören :)
 
vit46:

Das ist richtig, es funktioniert wie vorgesehen :) Aber nichts für ungut, ich habe mir Ihre Codes angesehen, ich habe keinen Aufruf von GetLastError() gefunden ... Die erste Fliege, die durch das Fenster fliegt, wird die Zivilisation zerstören :)
Und schauen Sie nach, wo ich über Fehlerbehandlung geschrieben habe - es gibt Forenbeiträge ;)