Andiamo SetLastError!!! - pagina 4

 
sergeev:

Non hai ancora scritto come il tuo suggerimento aiuterà a migliorare il MQL. finora sono solo richieste nude, di cui solo tu hai bisogno, per uno scopo poco chiaro.

Ho già scritto all'inizio che MQL5 ha questo effetto, mentre in MQL4 può essere migliorato dando visibilità a last_error. Ancora una volta, ho risolto il problema per la seconda volta con due funzioni fatte in casa. Solo che ora non è last_error ma piuttosto il primo ultimo errore più la possibilità di codici di errore personalizzati come in MQL5.
 
Roger:

Questo non va bene, perché se avete avuto un errore da un'operazione precedente e non l'avete gestito, allora se non c'è un errore nell'operazione corrente, gestirete quella precedente.

Sì, tutto va bene se non chiamate GetLastError ma solo da una funzione che restituisce un falso errore e che ha già cambiato il codice di un possibile errore precedente in uno nuovo!
 
vit46:

Sì, tutto va bene se non chiamate GetLastError ma solo da una funzione che restituisce un falso errore e che ha già cambiato il codice di un possibile errore precedente in uno nuovo!

Controllando l'errore in una funzione aggiuntiva, lo annullate semplicemente. Tuttavia, se avete posti di codice in cui non controllate un errore ma potrebbe verificarsi, potreste incorrere in un errore inappropriato.
 
Roger:

Controllando l'errore nella funzione aggiuntiva, lo state cancellando.


No, non lo sto cancellando:

// глобально видимая переменная для всей программы
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 не сработает.
   }
 

Qualcuno può raccomandare la funzione di gestione degli errori più decente (secondo voi)?

 
charter:

Qualcuno può raccomandare la funzione di gestione degli errori più decente (secondo voi)?


Non c'è molto da scegliere ... Fallo con quello che hai... o non fare una chiamata incondizionata a GetLastError
 
vit46:


No, non lo resetto:


Che cos'è questo?

last_error_fifo = GetLastError();
 
vit46:

Non è proprio una scelta... fare con quello che abbiamo... o non fare una chiamata incondizionata a GetLastError

No, non sto parlando delle informazioni sull'errore, sto parlando del "comportamento corretto" dell'EA quando si verifica/rileva un errore.
 
Roger:


Cos'è questo?


Non è un azzeramento incondizionato, ma solo se last_error_fifo == 0. In breve, è la stessa cosa delle uova nel profilo. controllare cosa ha restituito la funzione prima di controllare gli errori.
 
charter:

No, non sto parlando delle informazioni sull'errore, sto parlando del "comportamento corretto" dell'EA quando si verifica/rileva un errore.

Dipende dalla tua logica. Dopo tutto, si può gestire ogni errore, e si possono gestire solo quelli che sono importanti in una data situazione.