Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я надеялся, что кто-нибудь откликнется.
Не могу понять почему вот такой простой код считывания одного символа из файла зацикливается.
Однако, если поменять местами куски кода чтения и перемещения файлового указателя, то скрипт работает корректно.Попробуйте заменить
На
И прогоните скрипт еще раз.
Из собственного опыта:
Не стОит искать ошибку там, где ее скорей всего нет. Я по молодости пытался неправильную работу своего кода (С++) спихнуть на ошибки в STL. Таки нашел одну ошибку в Boost'е, но это скорей исключение, подтверждающее правило. Кому надо, тот поймет.
А если ошибка действительно есть -- выложите полностью описанный код с полностью описанным поведением (корректным и реальным).
Вам скажут спасибо и создатели, и разработчики.
Только перед этим лучше 100 раз все перепроверить.
В копилку странностей файловых функций от MQL4.
Строка выделенная красным вроде, как ни чего не делает и не нужна. Однако без неё записи в файл не происходит. Хотя, ни одна функция ошибок не возвращает и файловый указатель смещён куда надо. Т.е. файл дописан.Есть ещё одна непонятка.
Почему-то, если есть незаполенные ячейки в строках, то перезапись строки происходит с ошибками.
Каким-то непонятным образом сдвигаются ячейки следующих строк. Сама запись происходит куда указанно.
Вот ещё одна странность.
Если записывать новые более длинные строки на место старых, то тоже происходят изменения в других строках, которые не затрагиваешь перезаписью.
Т.е. перезапись без ошибок возможна только при сохранении формата.
Читайте тут https://www.mql5.com/ru/forum/52405
Действительно не работает )) Вернее работает, но неправильно ))
Вот такая конструкция работать не будет:
Дело в том, что указатель при чтении смещается на длину чтения.
Допустим имеем файл размером 4 байта. В этом отрывке указатель по окончанию операции чтения 4 байт будет стоять в позиции 4. Соотв-но FileIsEnding вернет FALSE и соотв-но мы получим еще один цикл с прочитанным пустым значением. Это странно конечно (видать просто ошибка), но в позицию 5 указатель встанет только при следующей операции чтения, когда уже поздно и мы "уехали" за конец файла.
Чтобы все это работало, нужно использовать конструкцию: