Проблема с CSV файлами ошибка 5004!!! с TXT читает с CSV не читает - страница 3

 
Aleksey Mavrin:

и кто же и в какой момент сбрасывает значение последней ошибки, чтобы вы не попали на ошибку какого-то предыдущего момента?

предопределённая переменная _LastError хранит последнюю ошибку. А получить ее можно функцией  GetLastError() . И можно обнулить значение  _LastError. Если ее обнулить, то там будет ноль. Там всегда последняя ошибка.
Документация по MQL5: Предопределенные переменные
Документация по MQL5: Предопределенные переменные
  • www.mql5.com
Для каждой выполняющейся mql5-программы поддерживается ряд предопределенных переменных, которые отражают состояние текущего ценового графика на момент запуска программы - эксперта, скрипта или пользовательского индикатора. Значение предопределенным переменным устанавливает клиентский терминал перед запуском mql5-программы на выполнение...
 

очередные тайны Мадридского двора....

никогда не замечал неоднозначного поведения при использовании предопределенных переменных или ее аналога функции

что _StopFlag работает как IsStopped(), что..

так и _LastError должна просто возвращаться из GetLastError() , что в принципе в справке и написано https://www.mql5.com/ru/docs/check/getlasterror

Возвращает содержимое системной переменной _LastError.



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

кто это может быть - как вариант защитник Вин10, ну может автор пишет там нелестные отзывы о Билле создателе Майкрософт? )))


решение - попробовать записывать в общую папку Common , если ситуация не изменилась - то значит проблема с флагами, если изменилась, то проблема в доступе к папке


про флаги - установите все флаги FILE_READ | FILE_WRITE | FILE_TXTFILE_ANSI | FILE_SHARE_READ |FILE_SHARE_WRITE

если проблема не ушла - то значит кто то обращается к текстовому файлу как юникод - и пытается читать по 2 байта, и возможно вылетает по EOF - нужно попробовать открыть файл как юникодный



но к самому MQL4 не припомню проблем с файлами, в MQL5 иногда бывает тестер не закрывал хэндлы, кажется сейчас ОК


ЗЫ: да кстати, был когда то топик, кажется про сохранение картинки в файл, там оказалось, что в индикаторе запись в файл картинки не происходит синхронно и вроде бы как только что записанную картинку нельзя сразу же прочитать - т.е. с записью в файл в индикаторах может, что то работать не совсем как ожидалось, по крайней в MQL5

 
Valeriy Yastremskiy:
предопределённая переменная _LastError хранит последнюю ошибку. А получить ее можно функцией  GetLastError() . И можно обнулить значение  _LastError. Если ее обнулить, то там будет ноль. Там всегда последняя ошибка.

Последняя не значит, что которая произошла только-что. А вот GetLastError() это конкретно последняя или 0 если ошибки нет. И в документации чётко сказано, что отсутствие ошибки при вызове  GetLastError() не обнуляет _LastError

 
Alexey Viktorov:

Последняя не значит, что которая произошла только-что. А вот GetLastError() это конкретно последняя или 0 если ошибки нет. И в документации чётко сказано, что отсутствие ошибки при вызове  GetLastError() не обнуляет _LastError

Откуда взяли? Думаю вы заблуждаетесь. Проверить легко сгенерировав ошибку типа 4051.

И кстати в 4-ке  GetLastError обнуляет ошибку ;)

 
File write, которое не share, зачем там?
 
Renat Akhtyamov:
File write, которое не share, зачем там?

Ну он же писать в файл вздумал. Или вы думаете что шаре врайт работает без просто флага врайт?, нет же.

 
Alexey Viktorov:

Последняя не значит, что которая произошла только-что. А вот GetLastError() это конкретно последняя или 0 если ошибки нет. И в документации чётко сказано, что отсутствие ошибки при вызове  GetLastError() не обнуляет _LastError

Если ошибок не было. Если ошибки были, то там последняя ошибка, и не обязательно ошибка последнего действия.

ЗЫ, да прочитал свою запись, оба косноязычны, тоже двояко так же написал)))) Вот у жены природная грамотность, у меня нет))))

Aleksey Mavrin:

Откуда взяли? Думаю вы заблуждаетесь. Проверить легко сгенерировав ошибку типа 4051.

И кстати в 4-ке  GetLastError обнуляет ошибку ;)

Не замечал что Получение Последней Ошибки что либо обнуляет.

Логика обычная, сперва получается идентификатор ошибочного действия, что означает появление ошибки и заполнение ПеременнойПоследнейОшибки, и потом ПолучениеПоследнейОшибки.

Просто так  функцию GetLastError обычно не вызывают.

 
Valeriy Yastremskiy:

Если ошибок не было. Если ошибки были, то там последняя ошибка, и не обязательно ошибка последнего действия.

ЗЫ, да прочитал свою запись, оба косноязычны, тоже двояко так же написал)))) Вот у жены природная грамотность, у меня нет))))

Не замечал что Получение Последней Ошибки что либо обнуляет.

Логика обычная, сперва получается идентификатор ошибочного действия, что означает появление ошибки и заполнение ПеременнойПоследнейОшибки, и потом ПолучениеПоследнейОшибки.

Просто так  функцию GetLastError обычно не вызывают.

Вот вы верно написали, если не было.

А насчёт обнуления - я замечал и на практике - и в документации так написано к 4-ке.

 
Aleksey Mavrin:

Вот вы верно написали, если не было.

А насчёт обнуления - я замечал и на практике - и в документации так написано к 4-ке.

Не много не так, есть ситуации, когда происходит возврат кода ошибки, но ошибки нет, тогда код ошибки 0, это не после каждого действия происходит. и ГетПоследнейОшибки ничего не делает. Это получатель.

0

ERR_NO_ERROR

Нет ошибки

1

ERR_NO_RESULT

Нет ошибки, но результат неизвестен

 
Valeriy Yastremskiy:

Не много не так, есть ситуации, когда происходит возврат кода ошибки, но ошибки нет, тогда код ошибки 0, это не после каждого действия происходит. и ГетПоследнейОшибки ничего не делает. Это получатель.

0

ERR_NO_ERROR

Нет ошибки

1

ERR_NO_RESULT

Нет ошибки, но результат неизвестен

Один вон фигню ляпнул и молчит теперь)

Вы то что мне хотите сказать, вы проверяли что не обнуляет? Тогда в документации врут?


Причина обращения: