Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
по последним наблюдениям получается, что FileTell становится сразу на конец строки. без учета где находится указатель при чтении разделителей ';'
если вместо этого разделителя поставить перевод карретки, то чтение и вывод FileTell корректным
Народ, проверьте по быстрому этот скрипт. Будем писать коллективную жалобу в сервисдеск. :)
Другой вариант скрипта: не будем читать символ, а сразу переместим указатель на 7 позицию. Comment выглядит так:
в журнале пишет следующее:
02:57:31 Test2 EURUSD,M15: Текущая позиция (должно быть 7): 7
02:57:31 Test2 EURUSD,M15: Текущая позиция (должно быть 24): 53
02:57:31 Test2 EURUSD,M15: Текущая позиция (должно быть 31): 53
02:57:31 Test2 EURUSD,M15: Текущая позиция (должно быть 38): 53
02:57:31 Test2 EURUSD,M15: Текущая позиция (должно быть 45): 53
02:57:31 Test2 EURUSD,M15: Текущая позиция (должно быть 53): 53
02:57:31 Test2 EURUSD,M15: uninit reason 0
Что еще раз доказывает, что FileTell работает неправильно. Скрипт Test2.mq4 во вложении.Дальше в лес - больше дров. В ходе углубленных экспериментов выяснилось, что функция FileSeek() с опцией SEEK_CUR тоже работает некорректно. Вместо того, чтобы перемещать указатель с текущей позиции на указанное количество байт (как написано в документации), функция перемещает указатель на указанное количество байт считая от конца строки. Вместе с тем, правильное значение "текущей позиции указателя " в терминале существует, т.к. все переменные записываются правильно и после каждого вызова функции FileRead...() указатель КОРРЕКТНО сдвигается до ближайшего разделителя. Вот только значение текущей позиции указателя невозможно выяснить, т.к. ни одна из существующих файловых функций его не возвращает.
По-видимому, MQ различает два понятия "файловый указатель" и "смещение текущей позиции файлового указателя". Для бинарных файлов это одно и то же. Для файлов CSV - это разные понятия, так, "смещение текущей позиции файлового указателя" после любой операции чтения будет находится в конце строки. А вот файловый указатель будет внутри строки, кроме последнего значения, считываемого из строки. В этом несложно убедиться, вставив операторы
после каждого Print(...) в скрипте.
Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().
вы в сервисдеск написали?
В сервисдеск не писал, т.к. на сайте метаквотов написано, что все вопросы по работе МТ4 нужно размещать на этом форуме, который они просматривают каждый день. Будем надеяться, что это на самом деле так.
В сервисдеск не писал, т.к. на сайте метаквотов написано, что все вопросы по работе МТ4 нужно размещать на этом форуме, который они просматривают каждый день. Будем надеяться, что это на самом деле так.