Andiamo SetLastError!!! - pagina 2

 
vit46:


No, lo scrivo così:


anche in questo caso è sbagliato.

vedete che ogni funzione restituisce false o -1 se fallisce.

è quello che si usa.

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

Mi manca questa funzione in MT4, cosa devo fare?

La funzione GetLastError() viene resettata dopo aver letto il suo valore. Inserisci un'ulteriore lettura in bianco prima dell'operazione che vuoi.

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

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

anche in questo caso è sbagliato.

vedete che ogni funzione restituisce false o -1 se fallisce.

questo è quello che dovreste usare.


È proprio vero! Non ci avevo nemmeno pensato... perché c'è un modo ancora migliore, come me :) posso scrivere funzioni complesse che generano i propri codici di errore.
 
Roger:

La funzione GetLastError() viene resettata dopo aver letto il suo valore. Inserisci un'ulteriore lettura vuota prima dell'operazione che vuoi.


Questo è il punto, non voglio mettere una lettura prima dell'operazione richiesta ogni volta... Ho tutte le operazioni di cui ho bisogno, quindi devo fare GetLastError sulla linea:)
 
vit46:

Questo è il punto: non voglio mettere una lettura prima dell'operazione richiesta ogni volta... Ho tutte le operazioni di cui ho bisogno, quindi devo fare GetLastError sulla linea:)

Allora non è chiaro come vorresti che la tua nuova funzione funzionasse. Come potrebbe aggiornarsi in base al tempo o a qualsiasi altro segno?
 
Vorrei leggere e scrivere una variabile speciale last_error. Gestito l'errore, impostato su zero - non gestito - il codice di errore raggiunge la fine del programma e viene rilevato lì.
 
vit46:


No, lo scrivo così:

OrderSend(...);

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

Senza offesa - anche questo è sbagliato.

È l'errore dell'operazione che deve essere controllato: cioè cosa restituisce OrderSend (...) e solo allora, se necessario, chiamare GetLastError().

 
Ognuno impazzisce a modo suo, è solo l'influenza che riunisce tutti. (Prostokvashino)
 
VladislavVG:


Esatto, funziona come previsto :) Ma senza offesa, ho guardato i tuoi codici, non ho trovato nessuna chiamata a GetLastError()... La prima mosca che vola attraverso la finestra distruggerà la civiltà :)
 
vit46:

Esatto, funziona come previsto :) Ma senza offesa, ho guardato i tuoi codici, non ho trovato nessuna chiamata a GetLastError() ... La prima mosca che vola attraverso la finestra distruggerà la civiltà :)
E guardate dove ho scritto sulla gestione degli errori - ci sono i thread del forum ;)