Dê-me SetLastError!!! - página 4

 
sergeev:

Você ainda não escreveu como sua sugestão ajudará a melhorar o MQL. até agora são apenas pedidos sem nitidez, que só você precisa, para um propósito pouco claro.

Já escrevi no início que a MQL5 tem esse efeito, enquanto na MQL4 ela pode ser melhorada dando visibilidade ao last_error. Mais uma vez, resolvi o problema pela segunda vez com duas funções artesanais. Não é o último_erro, mas sim o primeiro último erro mais a possibilidade de códigos de erro personalizados como na MQL5.
 
Roger:

Isto não é bom, porque se você teve um erro de uma operação anterior e não o tratou, então se não houver erro na operação atual, você tratará da anterior.

Sim, tudo está bem se você não chamar GetLastError, mas apenas de uma função que retorna um erro falso e já alterou o código de um possível erro anterior para um novo!
 
vit46:

Sim, tudo está bem se você não chamar GetLastError, mas apenas de uma função que retorna um erro falso e já alterou o código de um possível erro anterior para um novo!

Ao verificar o erro em uma função adicional, você simplesmente o anula. No entanto, se você tiver lugares de código onde não verifica um erro, mas ele pode ocorrer, você pode se deparar com um erro inadequado.
 
Roger:

Ao verificar o erro na função adicional, você está limpando-o.


Não, eu não estou limpando:

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

Qualquer pessoa pode recomendar a função de tratamento de erros Mais Decente (na sua opinião)?

 
charter:

Qualquer pessoa pode recomendar a função de tratamento de erros Mais Decente (na sua opinião)?


Não há muito a escolher ... faça com o que você tem... ou não faça uma chamada incondicional para GetLastError
 
vit46:


Não, eu não o reinicializo:


O que é isto?

last_error_fifo = GetLastError();
 
vit46:

Não é realmente uma escolha ... contentar-se com o que temos... ou para não fazer uma chamada incondicional para GetLastError

Não, eu não estou falando da informação do erro, estou falando do "comportamento correto" da EA quando um erro ocorre/detecta um erro.
 
Roger:


O que é isso?


Não é zeragem incondicional, mas somente se last_error_fifo == 0. Em resumo, é o mesmo que ovos em perfil. verifique o que a função retornou antes de verificar a existência de erros.
 
charter:

Não, não estou falando da informação de erro, estou falando do "comportamento correto" da EA quando um erro ocorre/detectar um erro.

Depende de sua lógica. Afinal, você pode lidar com cada erro, e só pode lidar com aqueles que são importantes em uma determinada situação.
Razão: