
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
и кто же и в какой момент сбрасывает значение последней ошибки, чтобы вы не попали на ошибку какого-то предыдущего момента?
очередные тайны Мадридского двора....
никогда не замечал неоднозначного поведения при использовании предопределенных переменных или ее аналога функции
что _StopFlag работает как IsStopped(), что..
так и _LastError должна просто возвращаться из GetLastError() , что в принципе в справке и написано https://www.mql5.com/ru/docs/check/getlasterror
Возвращает содержимое системной переменной _LastError.
по сабжу, если приведенный код все таки работает, но по невыясненным причинам иногда дает сбой, то скорее всего какой то сторонний процесс пытается иногда обращаться к записываемому файлу
кто это может быть - как вариант защитник Вин10, ну может автор пишет там нелестные отзывы о Билле создателе Майкрософт? )))
решение - попробовать записывать в общую папку Common , если ситуация не изменилась - то значит проблема с флагами, если изменилась, то проблема в доступе к папке
про флаги - установите все флаги FILE_READ | FILE_WRITE | FILE_TXT | FILE_ANSI | FILE_SHARE_READ |FILE_SHARE_WRITE
если проблема не ушла - то значит кто то обращается к текстовому файлу как юникод - и пытается читать по 2 байта, и возможно вылетает по EOF - нужно попробовать открыть файл как юникодный
но к самому MQL4 не припомню проблем с файлами, в MQL5 иногда бывает тестер не закрывал хэндлы, кажется сейчас ОК
ЗЫ: да кстати, был когда то топик, кажется про сохранение картинки в файл, там оказалось, что в индикаторе запись в файл картинки не происходит синхронно и вроде бы как только что записанную картинку нельзя сразу же прочитать - т.е. с записью в файл в индикаторах может, что то работать не совсем как ожидалось, по крайней в MQL5
предопределённая переменная _LastError хранит последнюю ошибку. А получить ее можно функцией GetLastError() . И можно обнулить значение _LastError. Если ее обнулить, то там будет ноль. Там всегда последняя ошибка.
Последняя не значит, что которая произошла только-что. А вот GetLastError() это конкретно последняя или 0 если ошибки нет. И в документации чётко сказано, что отсутствие ошибки при вызове GetLastError() не обнуляет _LastError
Последняя не значит, что которая произошла только-что. А вот GetLastError() это конкретно последняя или 0 если ошибки нет. И в документации чётко сказано, что отсутствие ошибки при вызове GetLastError() не обнуляет _LastError
Откуда взяли? Думаю вы заблуждаетесь. Проверить легко сгенерировав ошибку типа 4051.
И кстати в 4-ке GetLastError обнуляет ошибку ;)
File write, которое не share, зачем там?
Ну он же писать в файл вздумал. Или вы думаете что шаре врайт работает без просто флага врайт?, нет же.
Последняя не значит, что которая произошла только-что. А вот GetLastError() это конкретно последняя или 0 если ошибки нет. И в документации чётко сказано, что отсутствие ошибки при вызове GetLastError() не обнуляет _LastError
Если ошибок не было. Если ошибки были, то там последняя ошибка, и не обязательно ошибка последнего действия.
ЗЫ, да прочитал свою запись, оба косноязычны, тоже двояко так же написал)))) Вот у жены природная грамотность, у меня нет))))
Откуда взяли? Думаю вы заблуждаетесь. Проверить легко сгенерировав ошибку типа 4051.
И кстати в 4-ке GetLastError обнуляет ошибку ;)
Не замечал что Получение Последней Ошибки что либо обнуляет.
Логика обычная, сперва получается идентификатор ошибочного действия, что означает появление ошибки и заполнение ПеременнойПоследнейОшибки, и потом ПолучениеПоследнейОшибки.
Просто так функцию GetLastError обычно не вызывают.
Если ошибок не было. Если ошибки были, то там последняя ошибка, и не обязательно ошибка последнего действия.
ЗЫ, да прочитал свою запись, оба косноязычны, тоже двояко так же написал)))) Вот у жены природная грамотность, у меня нет))))
Не замечал что Получение Последней Ошибки что либо обнуляет.
Логика обычная, сперва получается идентификатор ошибочного действия, что означает появление ошибки и заполнение ПеременнойПоследнейОшибки, и потом ПолучениеПоследнейОшибки.
Просто так функцию GetLastError обычно не вызывают.
Вот вы верно написали, если не было.
А насчёт обнуления - я замечал и на практике - и в документации так написано к 4-ке.
Вот вы верно написали, если не было.
А насчёт обнуления - я замечал и на практике - и в документации так написано к 4-ке.
Не много не так, есть ситуации, когда происходит возврат кода ошибки, но ошибки нет, тогда код ошибки 0, это не после каждого действия происходит. и ГетПоследнейОшибки ничего не делает. Это получатель.
0
ERR_NO_ERROR
Нет ошибки
1
ERR_NO_RESULT
Нет ошибки, но результат неизвестен
Не много не так, есть ситуации, когда происходит возврат кода ошибки, но ошибки нет, тогда код ошибки 0, это не после каждого действия происходит. и ГетПоследнейОшибки ничего не делает. Это получатель.
0
ERR_NO_ERROR
Нет ошибки
1
ERR_NO_RESULT
Нет ошибки, но результат неизвестен
Один вон фигню ляпнул и молчит теперь)
Вы то что мне хотите сказать, вы проверяли что не обнуляет? Тогда в документации врут?