Даеш SetLastError!!! - страница 4

 
sergeev:

вы до сих пор не написали, чем ваше предложение поможет улучшить MQL. пока что какие то голые просьбы, нужные только лишь вам, с непонятной целью

в самом начале написал что в MQL5 уже додумались и там есть то что надо, а в MQL4 это можно исправить если дать видимость last_error. Повторяюсь второй раз уже решил проблемку двумя самопальными функциями. Только теперь это не last_error у меня а скорее первая последняя ошибка плюс возможность пользовательских кодов ошибок. как в MQL5.
 
Roger:

Так не годится, потому что если у Вас была ошибка от прежней операции и Вы ее не обработали, то если в настоящей операции не будет ошибок, Вы обработаете предыдущую.

да все годится если безусловно не вызывать GetLastError а только от функции, которая возвращает фальш, а значит уже изменила код возможной предыдущей ошибки на новый!
 
vit46:

да все годится если безусловно не вызывать GetLastError а только от функции, которая возвращает фальш, а значит уже изменила код возможной предыдущей ошибки на новый!

Проверяя ошибку в дополнительной функции, Вы ее как раз и обнуляете. Однако, если у вас есть места кода, где Вы не проверете ошибки, но она может возникнуть, можете нарваться на несоответствующую ошибку.
 
Roger:

Проверяя ошибку в дополнительной функции, Вы ее как раз и обнуляете.


нет я ее не обнуляю:

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

Может, кто-нибудь порекомендует Наиболее Достойную (на ваш взгляд) функцию обработки ошибок?

 
charter:

Может, кто-нибудь порекомендует Наиболее Достойную (на ваш взгляд) функцию обработки ошибок?


Да тут выбирать както не приходится ... делаем из того что есть... или не делать безусловный вызов GetLastError
 
vit46:


нет я ее не обнуляю:


А это что?

last_error_fifo = GetLastError();
 
vit46:

Да тут выбирать както не приходится ... делаем из того что есть... или не делать безусловный вызов GetLastError

Нет, я не об информации об ошибке, а о "правильном поведении" советника при возникновении/обнаружении ошибки.
 
Roger:


А это что?


А это не безусловное обнуление а только если last_error_fifo == 0 короче те же яйца только в профиль. проверяйте что вернула функция прежде чем проверять ошибки.
 
charter:

Нет, я не об информации об ошибке, а о "правильном поведении" советника при возникновении/обнаружении ошибки.

Это зависит от Вашей логики. Ведь можно сделать обработку каждой ошибки, а можно только тех которые важны в данной ситуации.
Причина обращения: