Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Так об этом и спрашивали. Тут ситуация такая - FileFlush ничего никуда физически не пишет, мы живем не во времена DOS )) Он дает команду Windows скинуть буфер на диск. А там уже Винда хозяйка и сама решает, когда скинуть в зависимости от занятости.
А FileClose что делает? Что-то я перестал погимать.)
Я не разработчик MQL, очевидно, закрывает открытый хендл файла, опять же через вызов win api CloseHandle. При этом буфера пишутся на диск автоматически.
Просто надо понимать, что MQL не господь бог и сам физически с диском не работает, только через посредника win api.
В Си открытие-закрытие файла через win api выглядят примерно так
*
Я не разработчик MQL, очевидно, закрывает открытый хендл файла, опять же через вызов win api CloseHandle. При этом буфера пишутся на диск автоматически.
Просто надо понимать, что MQL не господь бог и сам физически с диском не работает, только через посредника win api.
В Си открытие-закрытие файла через win api выглядят примерно так
*
Не любитель WinAPI. Только при суровой необходимости.) Уже в Си практически все было реализовано на уровне языка. h-файлы почитаешь - крыша поедет.)
Дык, по любому Винда сама решает. Мы его Клозе - дальше винда решает. Мы его Флеш - все тоже самое, опять она же.
Ну ладно. Бог с ним.
По моим наблюдениям, что с FileFlush, что без него, всё работает одинаково: данные скидываются на диск после определённого количества кб/мб, записанных по FileWrite. Единственный способ записать данные гарантированно и сразу - это переоткрытие файла.
А все эти абсурдные аргументы про "неправильное использование" кем-то FileFlush говорят о том, что разработчики сами не воспринимают свой продукт всерьёз. Т.е. MQL по-прежнему позиционируется не как инструмент профессионала, а как игрушка для нубов, не умеющих кодить. И в угоду этим нубам урезается функционал и надёжность для всех остальных. В итоге - одни ничему не учатся, а вторые вынуждены изобретать костыли.
Поддерживаю высказанную выше идею, что FileFlush тогда следует убрать из документации, либо же явно указать там, что функция - пустышка. Зачем обманывать пользователей вот такими фразами:
Для того чтобы данные сразу же сохранились в файле, нужно использовать функцию FileFlush()
Функцию необходимо использовать тогда, когда записываемые данные представляют собой определенную ценность
У меня работает FileFlush(). Прямо сейчас проверил.
В чём состояла проверка?
За эти 30 секунд, пока файл пишется, несколько раз посмотрел его свойства, размер увеличивался.
Потом закомментировал FileFlush(h), размер был 0, пока файл на закрылся.
За эти 30 секунд, пока файл пишется, несколько раз посмотрел его свойства, размер увеличивался.
Потом закомментировал FileFlush(h), размер был 0, пока файл на закрылся.
Чудеса какие-то. Только что у себя проверил, ничего подобного не наблюдаю. Нулевой размер в обоих случаях.
Кстати, вы говорите, что "смотрели свойства" - имеете ввиду щёлкнуть правой кнопкой на файл и "Свойства"? Если так, то это уже открытие файла, и тогда да, данные сразу скидываются на диск.
Чудеса какие-то. Только что у себя проверил, ничего подобного не наблюдаю. Нулевой размер в обоих случаях.