Ошибки, баги, вопросы - страница 3594
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Попробуйте при открытии файла добавлять флаг FILE_ANSI.
FILE_ANSI помогает. Лишних байт нет.
FILE_ANSI добавлять при записи и при чтении.
На картинке:
Верх) при записи и чтении
Низ) только при записи
Обнаружил пару байт, в самом начале файла, 'FF' и 'FE'. Они дают лишний/неизвестный знак к числу '1732785720'.
Это тот самый BOM (https://ru.wikipedia.org/wiki/Маркер_последовательности_байтов)
для уверенности ВСЕГДА задавайте все нужные флаги открытия файла. Не полагайтесь на умолчания.
---
уже привычка, для записи в текстовый файл писать FileOpen(fileName,FILE_WRITE|FILE_SHARE_READ|FILE_TXT|FILE_ANSI,';',CP_UTF8)
"файл для записи, разрешено одновременно чтение, интерпретировать как текст, с однобайтной кодировкой, разделитель полей ';', кодировка utf-8"
а при открытии файла на чтение всегда проверять есть-ли там BOM в начале. Потому что файл может быть чёрти где пересохранён с этим дурацким маркером
Тут слушок прошёл, что в госдуме обсуждали необходимость закрыть цирки.
Да и пусть закрывают… На форуме почитать и в цирк ходить не надо. ТРИ страницы обсуждение и никто не задался вопросом: А зачем преобразовывать тип datetime в int? Что вы хотите увидеть если 8ми байтный тип перевести в 4х байтный… Зачем строку переводить в int и затем в дату? Почему не перевести строку в дату???
Сбой чтения/записи текстового файла решается добавлением флага FILE_ANSI.
Сбой чтения\записи решается правильным преобразованием данных.
Тут слушок прошёл, что в госдуме обсуждали необходимость закрыть цирки.
Да и пусть закрывают… На форуме почитать и в цирк ходить не надо. ТРИ страницы обсуждение и никто не задался вопросом: А зачем преобразовывать тип datetime в int? Что вы хотите увидеть если 8ми байтный тип перевести в 4х байтный… Зачем строку переводить в int и затем в дату? Почему не перевести строку в дату???
у вас классика утреннего бреда...надо высыпаться :-)
тип datetime и так целое число, 64 бита. И нигде автор в 32 бита его не преобразует.
datetime как целое число преобразуют в строку (IntegerToString(long x,..)) и это число записывают в файл. Потому-что в виде числа оно стандартно и портабельно, это unixtime то есть кол-во секунд с 1970г, а в текстовом представлении MQL оно только в MQL.
на досуге попробуйте привести штатный datetime в столь-же штатный SQLite datetime.
у вас классика утреннего бреда...надо высыпаться :-)
тип datetime и так целое число, 64 бита. И нигде автор в 32 бита его не преобразует.
datetime как целое число преобразуют в строку (IntegerToString(long x,..)) и это число записывают в файл. Потому-что в виде числа оно стандартно и портабельно, это unixtime то есть кол-во секунд с 1970г, а в текстовом представлении MQL оно только в MQL.
на досуге попробуйте привести штатный datetime в столь-же штатный SQLite datetime.
Мне совсем не интересно как будет в sql или fortran
О каких 64\32 бита вы говорите? В коде есть перевод тиа datetime 8 байт в int 4 байта. И вы хотите сказать, что гарантировано сохранение значения?
Мне совсем не интересно как будет в sql или fortran
О каких 64\32 бита вы говорите? В коде есть перевод тиа datetime 8 байт в int 4 байта. И вы хотите сказать, что гарантировано сохранение значения?
в коде https://www.mql5.com/ru/forum/1111/page3592#comment_55245971 преобразований в 32 бита нет, это РАЗ
и даже если-бы оно было, ничего не бы сломалось. Знаковое переполнение будет после 2147483647, после 19 янв.2038 г. это ДВА
В коде есть перевод тиа datetime 8 байт в int 4 байта.
Что-то не могу найти.