Ошибки, баги, вопросы - страница 3594

 
JRandomTrader #:

Попробуйте при открытии файла добавлять флаг FILE_ANSI.

FILE_ANSI помогает. Лишних байт нет.

 

FILE_ANSI добавлять при записи и при чтении.

На картинке:

Верх) при записи и чтении

Низ) только при записи


 
Putnik #:

 Обнаружил пару байт, в самом начале файла, '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 и затем в дату? Почему не перевести строку в дату???

2024.11.29 10:43:07.871 Test shablon (GBPUSD,H1)        -----
2024.11.29 10:43:07.871 Test shablon (GBPUSD,H1)        Date1=2024.11.28 09:22:00
2024.11.29 10:43:07.871 Test shablon (GBPUSD,H1)        Str=1732785720 2024.11.28 09:22
2024.11.29 10:43:07.871 Test shablon (GBPUSD,H1)        Date2=2024.11.29 00:00:00
2024.11.29 10:43:07.871 Test shablon (GBPUSD,H1)        StrStr[0]=1732785720 StrStr[1]=2024.11.28 StrStr[2]=09:22
2024.11.29 10:43:07.871 Test shablon (GBPUSD,H1)        Date3=2024.11.29 00:00:00
 
Сбой чтения/записи текстового файла решается добавлением флага FILE_ANSI.
 
Putnik #:
Сбой чтения/записи текстового файла решается добавлением флага FILE_ANSI.

Сбой чтения\записи решается правильным преобразованием данных.

 
Alexey Viktorov #:

Тут слушок прошёл, что в госдуме обсуждали необходимость закрыть цирки. 

Да и пусть закрывают… На форуме почитать и в цирк ходить не надо. ТРИ страницы обсуждение и никто не задался вопросом: А зачем преобразовывать тип datetime в int? Что вы хотите увидеть если 8ми байтный тип перевести в 4х байтный… Зачем строку переводить в int и затем в дату? Почему не перевести строку в дату???

у вас классика утреннего бреда...надо высыпаться :-)

тип datetime и так целое число, 64 бита. И нигде автор в 32 бита его не преобразует.

datetime как целое число преобразуют в строку (IntegerToString(long x,..)) и это число записывают в файл. Потому-что в виде числа оно стандартно и портабельно, это unixtime то есть кол-во секунд с 1970г, а в текстовом представлении MQL оно только в MQL. 

на досуге попробуйте привести штатный datetime в столь-же штатный SQLite datetime. 

 
Maxim Kuznetsov #:

у вас классика утреннего бреда...надо высыпаться :-)

тип datetime и так целое число, 64 бита. И нигде автор в 32 бита его не преобразует.

datetime как целое число преобразуют в строку (IntegerToString(long x,..)) и это число записывают в файл. Потому-что в виде числа оно стандартно и портабельно, это unixtime то есть кол-во секунд с 1970г, а в текстовом представлении MQL оно только в MQL. 

на досуге попробуйте привести штатный datetime в столь-же штатный SQLite datetime. 

Мне совсем не интересно как будет в sql или fortran

О каких 64\32 бита вы говорите? В коде есть перевод тиа datetime 8 байт в int 4 байта. И вы хотите сказать, что гарантировано сохранение значения?


 
Alexey Viktorov #:

Мне совсем не интересно как будет в sql или fortran

О каких 64\32 бита вы говорите? В коде есть перевод тиа datetime 8 байт в int 4 байта. И вы хотите сказать, что гарантировано сохранение значения?


в коде https://www.mql5.com/ru/forum/1111/page3592#comment_55245971 преобразований в 32 бита нет, это РАЗ

и даже если-бы оно было, ничего не бы сломалось. Знаковое переполнение будет после  2147483647, после 19 янв.2038 г. это ДВА

Ошибки, баги, вопросы - Создаем дефолтный шаблон.
Ошибки, баги, вопросы - Создаем дефолтный шаблон.
  • 2024.11.24
  • Aleksandr Slavskii
  • www.mql5.com
У меня новый чарт открывается с отключенной торговой историей. Почему магик ордера в структуре MqlTradeRequest не соответствует действительности. то когда магик отложенного ордера будет показан в MqlTradeRequest
 
Alexey Viktorov #:
В коде есть перевод тиа datetime 8 байт в int 4 байта.

Что-то не могу найти.