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

 

Извините если что , я создал ветку https://www.mql5.com/ru/forum/455210/page2

нужно было сразу здесь вопросы задавать , может кто подскажет решения проблемы

Вопрос про iBarshift MT5
Вопрос про iBarshift MT5
  • 2023.10.05
  • www.mql5.com
Доброго времени суток! Столкнулся с такой проблемой: Период MN , iBarShift не находит бар по времени хотя время определяется нормально...
 
Artem Sulejmanov #:

Извините если что , я создал ветку https://www.mql5.com/ru/forum/455210/page2

нужно было сразу здесь вопросы задавать , может кто подскажет решения проблемы

Вам в Вашей ветке, на которую Вы здесь дали ссылку, всё подробно пояснил Сергей Голубев.

Приложите код, который со 100% результатом будет выдавать ошибку, пожалуйста.

Не забывайте, что это технический форум, где эмоции остаются у Вас, и никого более не касаются.

 
A100 #:

Не путайте - у Вас другая исходная строка (поэтому и результат другой) - для понимания разницы сравните их через StringLen

Ну так то и в вашей строке,  показывает не восемь символов. 

 StringLen("abc\0def") = 7

StringLen("\r\n") = 2

То есть мы видим, что строковая переменная не видит обратный слэш.

Не могу найти где читал об этом в справке, и читал ли. 

Возможно это не баг, а фича)))


А распечатать вашу строку вообще не получится Print("abc\0def");  - выдаёт ошибку.

 
Artem Sulejmanov #:

Извините если что , я создал ветку https://www.mql5.com/ru/forum/455210/page2

нужно было сразу здесь вопросы задавать , может кто подскажет решения проблемы

Я использую в советниках, что то типа такого

   int bars = iBars(_Symbol, PERIOD_CURRENT);
   int shift = 10;
   if(shift > bars)
      return;
   while(iBarShift(_Symbol, PERIOD_CURRENT, shift) < 0 && !IsStopped())
      Sleep(300);

В индикаторах Sleep  не работает, поэтому там без while  просто  return 0;

 
Aleksandr Slavskii #:

Ну так то и в вашей строке,  показывает не восемь символов. 

 StringLen("abc\0def") = 7

StringLen("\r\n") = 2

То есть мы видим, что строковая переменная не видит обратный слэш.

Разберитесь в основах - там нет обратного слеша

\0 это единый символ, такой же как допустим \r или \n

 
void OnStart()
{
  Print(StringLen("123\0" + "4567")); // 8
  Print(StringLen("123\04567"));      // 4
}
 
fxsaber #:

И в чем ошибка? \04567 это единый символ в восьмеричной записи, а + это конкатенация двух независимых строковых констант - соответственно и результат разный

 
A100 #:

И в чем ошибка?

Где?

 
fxsaber #:

Где?

В Вашем примере. Тема:

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2023.10.05
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
A100 #:

Разберитесь в основах - там нет обратного слеша

\0 это единый символ, такой же как допустим \r или \n

Я не спорю.

Я в курсе, что вы программист очень высокого уровня. И мне до этого уровня расти и расти.

Я справку то MQL не всю ещё освоил.

Просто я не могу понять, почему вы считаете, что там ошибка.

Вы подаёте в функцию строку из семи знаков, при конкатенации отбрасывается пустое значение  "\0def".

На выходе получается строка не равная сумме того, что мы подали на вход.

Вы в этом видите ошибку?


Ну и в справке к тому же написано " Если за обратной косой чертой следует символ, отличный от перечисленных, результат не определен."

Может быть в этом причина?

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