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

 
pavlick_:

Да, спасибо. Я там имена подправил, но ошибка всё равно осталась.

По факту в ObjectGetInteger, вместо

void ObjectGetInteger( long& x ) { x = clrNONE; }

происходит

void ObjectGetInteger( long& x ) { x = -1; }

выход: далее везде писать вместо x

(color)x
 
fxsaber:

clrNONE - все биты 4-х байт заполнены единицами.

ulong clr - все биты 8-и байт заполнены единицами.

Тут какая-то ошибка, думаю.

1. clrNONE - положительное 4х байтовое число т.к. Alert( long(clrNONE) ) == 4294967295 (если бы было отриц (color знаковый), то ушло бы в минус)

2. Перегнали его в лонг в SetInteger, значение не могло измениться

3. Почему в SetInteger я получаю непервоначальное число?

То ли внутри терминала color перегоняется в знаковый тип, int например, и потом вырастает при переводе в алонг, то ли ещё что-то.

 
Ещё раз всем большое спасибо. Почти уверен, что внутри цвет кастуется в signed, при обратном кастинге и ошибка. Ну это забота разработчиков написать валидную ObjectGetInteger(), делов то на несколько символов: ObjectGetInteger() { return long((uint)internal_clr); }
 
Это ошибка (разные массивы) или нет?
void OnStart()
{
  short Data[] = {1};
  short Data2[];
  
  StringToShortArray(ShortArrayToString(Data), Data2);
//  StringToShortArray(ShortArrayToString(Data), Data2, 0, ArraySize(Data)); // так массивы совпадут
  
  ArrayPrint(Data);  // 1
  ArrayPrint(Data2); // 1 0
}
 
fxsaber:
Это ошибка (разные массивы) или нет?
нет, просто завершающий 0 добавлен.
 
Комбинатор:
нет, просто завершающий 0 добавлен.

Выше добавил строку - указал копировать длину строки. Стало совпадать. Т.е. получается, что входной параметр count = -1 добавляет ноль в конец, а count = StringLen - ничего не добавляет. Нюансик!

 
fxsaber:

Т.е. получается, что входной параметр count = -1 добавляет ноль в конец, а count = StringLen - ничего не добавляет. Нюансик!

Ну просто в mql строки это нуль-строки, т.е. набор символов с завершающим '\0' на конце. StringLen этот 0 не учитывает, а преобразование в массив учитывает полную длину.

Причины разницы спрашивайте у разрабов. Но не сказать чтобы это прямо мозг выносило.

 
Комбинатор:

Ну просто в mql строки это нуль-строки, т.е. набор символов с завершающим '\0' на конце. StringLen этот 0 не учитывает, а преобразование в массив учитывает полную длину.

Причины разницы спрашивайте у разрабов. Но не сказать чтобы это прямо мозг выносило.

Ноль добавляет в конец строки после преобразования Массив->Строка только в случае, если массив не содержал нулей.

 

Здравствуйте! 2017.08.22_03:15 GMT+3. Вопрос к A100: я не знаю что такое "метод TrendTenkan сам по себе (его никто не вызывает)"? Если мне нужно, чтобы в функциях "LongCondition" и "ShortCondition" использовались результаты вычислений из метода TrendTenkan, а у меня до сих пор не получается это сделать. Это значит, что LongCondition должна вызывать TrendTenkan ? Я недавно взялся за ООП, поэтому извините, что Вас опять беспокою. Прилагаю последнее, что я делал с файлом SignalIcimoku.mqh , журнал тестера и основной файл. 03:28 GMT+3.

Файлы:
[Удален]  
Alexey Kozitsyn:

Уважаемые разработчики! Напомните, пожалуйста, были ли правки насчет того, что если расчет индикатора идет в подокне и стиль нескольких его буферов DRAW_NONE, то они не влияют на масштаб отображения в подокне? Или таких правок не было?

Если таких правок не было, пожалуйста, внесите их. А то сейчас получается, что стиль DRAW_NONE влияет на графику в подокне, которая должна быть совсем в другом масштабе!

Stanislav Korotky:
Artyom Trishkin:
Исправили. Будет доступно в следующем билде MetaQuotes-Demo.