Ошибки, баги, вопросы - страница 2723
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Совсем необязательно. Почему именно сишные? Как насчёт C# ? - к нему как-раз таки ближе по смыслу.
Наверное потому, что мкл с++ подобный, а туда структуры из си пришли.
Все разговоры о пассивности структур - это всё архаические представления, имхо.
Нужны конструктороы - используйте классы или велком в шарп. Зачем лишать структуры такой коннотации? Программы станут от этого только выразительней. Вот я возьму чей-то код, вижу - структуа вместо класса, и получу много инфы от одного лишь слова. Вы же не получите ничего, будете усердно изучать исходники для получения того же резальтата, что я получил за один миг. По моему опыту - данная договорённость о структурах соблюдается, ну может какая-то виндовая нигилистическая маргинальщина.
Считаю, что, как минимум, конструктор обязан быть у каждого типа. Неинициализированные поля - это зло, от которого нужно уходить.
Никакого зла там нет, вам кажется. Вон в стандарт протянули даже: чтение неинициализированного unsigned char и std::byte не undefinded behavior. Можно агрегатную инициализацию для POD. И не забывайте - вся эта инициализация не бесплатна, эта реальные расходы ресурсов (цпу, память, размер экзешника). Если вам класть на это со своей числодробилкой, то в случае какого-нибудь микроконтроллера это может быть важно. Ведь С/С++ это не только виндовое формошлёпство вроде шарпа.
Одна лишь инициализация одной переменной увеличила размер инструкций на 30%.В одном терминале. Пишет данные эксперт, читает индикатор. Висели на разных чартах, но очевидно, что могут быть и на одном (если это важно). Билд 2380.
Эксперт, который читает файл, должен держать этот файл закрытым.
Особенность реализации файлов в MQL5 такова, что они по максимуму держат данные из файлов в собственных буферах. Если объём информации настолько велик, что не помещается в буфер, тогда Ваш трюк с перестановкой указателя в начало потом в конец файла может сработать.
Поэтому на данный момент открывайте файл, проверяйте содержимое, потом снова закрывайте
Эксперт, который читает файл, должен держать этот файл закрытым.
Особенность реализации файлов в MQL5 такова, что они по максимуму держат данные из файлов в собственных буферах. Если объём информации настолько велик, что не помещается в буфер, тогда Ваш трюк с перестановкой указателя в начало потом в конец файла может сработать.
Поэтому на данный момент открывайте файл , проверяйте содержимое, потом снова закрывайте
Так что FileFlush () бесполезен?
Нет. FileFlush надо делать обязательно, если хотите, чтобы кто-то ещё смог прочитать изменённый файл
Проблема в том, что MQL5 программа при открытии читает файл в собственный буфер. И ничего не узнает о том, что в файле что-то изменилось, пока снова не прочитает файл. Снова прочитать файл можно только при закрытии и последующем открытии этого файла
Нет. FileFlush надо делать обязательно, если хотите, чтобы кто-то ещё смог прочитать изменённый файл
Даже если закрывать файл?
Даже если закрывать файл?
Я как раз об этом и говорю. Закрыть, потом снова открыть
Или Вы имеете в виду FileFlush перед закрытием файла?
Нет. FileFlush надо делать обязательно, если хотите, чтобы кто-то ещё смог прочитать изменённый файл
Проблема в том, что MQL5 программа при открытии читает файл в собственный буфер. И ничего не узнает о том, что в файле что-то изменилось, пока снова не прочитает файл. Снова прочитать файл можно только при закрытии и последующем открытии этого файла
Слава, это проблема именно. Пожалуйста, посмотрите на ссылку, которую я публикую выше, вы найдете код для его воспроизведения.
Тот же файл открывается из одного советника, 1 дескриптор для записи, 2-й для чтения, fileflush используется после записи, попробуйте прочитать, и это не работает правильно.
Конечно, если вы закрываете / открываете, это работает, но тогда нет необходимости использовать FileFlush.
Слава, это проблема именно. Пожалуйста, посмотрите на ссылку, которую я публикую выше, вы найдете код для его воспроизведения.
Тот же файл открывается из одного советника, 1 дескриптор для записи, 2-й для чтения, fileflush используется после записи, попробуйте прочитать, и это не работает правильно.
Конечно, если вы закрываете / открываете, это работает, но тогда нет необходимости использовать FileFlush.
Я понимаю описанную Вами проблему.
1-й советник пишет файл. Он может не закрывать этот файл, но в таком случае должен вызывать FileFlush
2-й советник читает файл. Он должен каждый раз открывать файл, потом закрывать.
Открытие и закрытие файла только для второго советника!
Я как раз об этом и говорю. Закрыть, потом снова открыть
Или Вы имеете в виду FileFlush перед закрытием файла?
Да, нужно ли флашить перед закрытием? Или закрытие гарантирует актуальность записанного файла.
Да, нужно ли флашить перед закрытием? Или закрытие гарантирует актуальность записанного файла.