Не все функции, в результате которых может взвестись ошибка, сбрасывают в 0 переменную _LastError.
Мы обязательно отразим этот факт с подробностями в документации по языку. Пока руки не дошли.
Некоторые функции перегружены и возвращают логическое значение, как признак успешности выполнения некоторой операции. Например: SymbolInfoDouble.
double SymbolInfoDouble(string name, int prop_id);
bool SymbolInfoDouble(string name, int prop_id, double& double_var);
Это как-то связано с указанным вопросом: например, во втором варианте автоматически выполняется ResetLastError?
Некоторые функции перегружены и возвращают логическое значение, как признак успешности выполнения некоторой операции. Например: SymbolInfoDouble.
double SymbolInfoDouble(string name, int prop_id);
bool SymbolInfoDouble(string name, int prop_id, double& double_var);
Это как-то связано с указанным вопросом: например, во втором варианте автоматически выполняется ResetLastError?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Не совсем понятно, перед какими функциями необходимо её вызывать, а перед какими нет?
void OnStart()
{
ResetLastError();
PrintFormat("Начальный код ошибки = %i", GetLastError());
// Создадим ошибку
double volumeMin;
if (SymbolInfoDouble(Symbol() + "aaa", SYMBOL_VOLUME_MIN, volumeMin))
PrintFormat("Вызов 1 SymbolInfoDouble. Ошибок нет");
else
PrintFormat("Вызов 1 SymbolInfoDouble. Код ошибки = %i", GetLastError());
// Проверим её влияние на следующий вызов
if (SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MIN, volumeMin))
PrintFormat("Вызов 2 SymbolInfoDouble. Ошибок нет");
else
PrintFormat("Вызов 2 SymbolInfoDouble. Код ошибки = %i", GetLastError());
}
Смотрим в журнал:
2010.10.24 18:18:50 test (EURUSD,H1) Вызов 2 SymbolInfoDouble. Ошибок нет
2010.10.24 18:18:50 test (EURUSD,H1) Вызов 1 SymbolInfoDouble. Код ошибки = 4301
2010.10.24 18:18:50 test (EURUSD,H1) Начальный код ошибки = 0
Получается, что не перед всеми функциями нужно вызывать ResetLastError()? Или это не показательный пример и по-хорошему нужно сбрасывать код после обнаружения/обработки ошибки, чтобы проверить статус ошибки после очередного вызова некоторой функции?