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

 
Заметил такой баг на сайте в личных сообщениях на телефоне.
Не работает обновление страницы стандартным способом смахивания вниз.

. Появился может 1 месяц или два. Просто я не обращал внимания.

Телефон на андроид 10, если важно. 
Захожу в личные сообщения и если пришло новое. сообщение, то оно не всегда обновляется автоматически. 

И при обновлении пальцем( сверху вниз) оно тоже перестало обновляться. 

Приходится нажимать еще раз на значок личных сообщений. 

Баг только в личных сообщениях. 
Update: такое только на samsung Internet. 
Скорее проблема в нем после обновления. 

В хром все ок. 
 

Почему в 3-ей строке:

  datetime dt = 0;
  ulong x = 0;
  if(dt < x) x++;

предупреждение "sign mismatch"?

datetime - это по идее беззнаковое число (8 байт как и ulong). Приведите мне пример отрицательной даты.

 

Расскажите мне, как отлаживать ex5-библиотеки?

Есть библиотека, которая несколько лет работала без проблем. Однако после некоторых изменений компилятора в последних билдах, вызов функции по указатели из библиотеки завершается с ошибкой "invalid function pointer call". Если исходник библиотеки включить в эксперт напрямую через инклуд, ошибки нет.

В общем, нужно каким-то образом сравнивать типы указателей (прототипы функций), формируемые в библиотеке и в эксперте, который библиотеку подгружает.

Суппорт закрыт. Исходник из маркета я здесь показывать не буду.

Для справки, при тех же исходниках вызов из библиотеки нормально работал в билде 2190.
 
Stanislav Korotky:

Для справки, при тех же исходниках вызов из библиотеки нормально работал в билде 2190.

у меня в 2170 перестали указатели на функции работать, вот пример который работает еще в MQL4, но перестал работать в MQL5

https://www.mql5.com/ru/forum/323539/page3#comment_13444791

 
Igor Makanu:

у меня в 2170 перестали указатели на функции работать, вот пример который работает еще в MQL4, но перестал работать в MQL5

https://www.mql5.com/ru/forum/323539/page3#comment_13444791

Почитал. У меня другой случай. Но вероятно, это последствие одного и того же "закручивания гаек". Однако хорошие практики при этом подразумевают человеческие инструкции по миграции существующих разработок с примерами или наличие суппорта.

 

Весьма занимательная математика 

//+------------------------------------------------------------------+
double volume_step = 0.01;
void OnStart()
  {
   int total = 10;
   double aVolume = 0.01;
   
   for(int i=0; i<total; i++)
     {
      aVolume = volume_step * MathFloor(aVolume / volume_step);
      Print(DoubleToString(aVolume,8)+"   "+ DoubleToString(volume_step,2)+"   "+DoubleToString(MathFloor(aVolume / volume_step),2)+"  Next lot = "+(aVolume+0.01));
      aVolume+=0.01;
     }
  }
//+------------------------------------------------------------------+

Результат

2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000   0.01   6.00  Next lot = 0.06999999999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000   0.01   6.00  Next lot = 0.06999999999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000   0.01   6.00  Next lot = 0.06999999999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000   0.01   6.00  Next lot = 0.06999999999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000   0.01   6.00  Next lot = 0.06999999999999999    Как 0.06000000 + 0.01  становиться 0.06999999999999999 
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.05000000   0.01   5.00  Next lot = 0.06
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.04000000   0.01   4.00  Next lot = 0.05
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.03000000   0.01   3.00  Next lot = 0.04
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.02000000   0.01   2.00  Next lot = 0.03
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.01000000   0.01   1.00  Next lot = 0.02


 
Vladimir Pastushak:

Весьма занимательная математика 

Как 0.06000000 + 0.01  становиться 0.06999999999999999 

потому что 0.06999999999999999 это ближайшее число к 0.07 которое может быть представлено типом double

 
Vladimir Pastushak:

Весьма занимательная математика 

Результат

2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000   0.01   6.00  Next lot = 0.06999999999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000   0.01   6.00  Next lot = 0.06999999999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000   0.01   6.00  Next lot = 0.06999999999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000   0.01   6.00  Next lot = 0.06999999999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000   0.01   6.00  Next lot = 0.06999999999999999    Как 0.06000000 + 0.01  становиться 0.06999999999999999 
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.05000000   0.01   5.00  Next lot = 0.06
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.04000000   0.01   4.00  Next lot = 0.05
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.03000000   0.01   3.00  Next lot = 0.04
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.02000000   0.01   2.00  Next lot = 0.03
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.01000000   0.01   1.00  Next lot = 0.02


Курите доки у будет вам счастье.

А по теме: IEEE 754, - изучайте.

 
Igor Makanu:

потому что 0.06999999999999999 это ближайшее число к 0.07 которое может быть представлено типом double

Vladimir Simakov:

Курите доки у будет вам счастье.

А по теме: IEEE 754, - изучайте.

Ну что вы его учите... у него 49 опубликованных продуктов в маркете. Всё уже сам знает....
 
Alexey Viktorov:
Ну что вы его учите... у него 49 опубликованных продуктов в маркете. Всё уже сам знает....

т.е. Вы предлагаете игнорировать сообщения тех кто публикуется в Маркете? ... не уверен, что захочу так делать, был вопрос, было обсуждение, по моему это нормальная ситуация

PS:

в довесок .... попробуйте распринтовать double через printf(), есть у меня подозрение, что будет еще много "о сколько нам открытий чудных готовят просвещенья дух..."

;)

Причина обращения: