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

 
darkangel8733:

Здравствуйте, купил у вас советника,"черепаху" ,а он не работает в автономном режиме, ???

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

 
A100:
Требование было только одно - помогать, а не мешать. Если Вы считаете дискуссию ненужной - не вступайте в нее... и не Вам это решать (нужная\ненужная) - для этого есть Администрация и Модераторы

согласен, но если совет не нравится, то реагировать на него просто не нужно, тогда и вопросов не будет, тут каждый пишет то, что считает нужным, я посчитал нужным дать совет, т.е. оказать безвозмездную помощь, вместо благодарности читаю претензии... удачи

 
Konstantin:

согласен, но если совет не нравится, то реагировать на него просто не нужно

Вот это дельный совет...спасибо Вам за него... воспользуюсь
 

Как так?

ArrayFree(SummArr);
ArrayResize(SummArr,57);
Print("SummArr_1=",SummArr[1]);
2018.07.26 02:09:04.566 Pred_Ocenka_02 (Si Splice,M1)   SummArr_1=1190264832

Почему значение массива не пустое(нулевое)?

 
Aleksey Vyazmikin:

Как так?

Почему значение массива не пустое(нулевое)?

А если ему сначала задать размер, а уже потом очищать?

 
Vitaly Muzichenko:

А если ему сначала задать размер, а уже потом очищать?

Тогда

2018.07.26 02:20:08.482 Pred_Ocenka_02 (Si Splice,M1)   array out of range in 'Pred_Ocenka_02.mq5' (76,27)
Он не имеет информацию о размере после очистки.
 
Если 
ArrayFree(SummArr);

Убрать, то значение так же не пустое. Массив ранее не использовался.

 

Какая то ерунда, вот код урезал вообще

int SummArr[];

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   ArrayFree(SummArr);
   ArrayResize(SummArr,57);
   Print("SummArr_1=",SummArr[1]);
   Print("SummArr_30=",SummArr[30]);   
   Print("SummArr_57=",SummArr[56]);   
  }
//+------------------------------------------------------------------+

На выходе

2018.07.26 02:37:58.693 Pred_Ocenka_error (Si Splice,M15)       SummArr_1=1190264832
2018.07.26 02:37:58.693 Pred_Ocenka_error (Si Splice,M15)       SummArr_30=2097181
2018.07.26 02:37:58.693 Pred_Ocenka_error (Si Splice,M15)       SummArr_57=154252694

Прошу проверьте кто либо, а то может у меня терминал свихнулся.

Или это норма, и так и должно всё мусором заваливаться?

 

В индикаторе mql4 перестал работать код. как исправить?

else{// Иначе стрелка создана. Задаём её свойства
 ObjectSetInteger(Open_name,OBJPROP_ARROWCODE,OpenArrowCode);//код стрелки 232 
 ObjectSet(Open_name,OBJPROP_COLOR,ObjColor);//цвет стрелки
}

Редактор пишет 'ObjectSetInteger' - no one of the overloads can be applied to the function call

Сколько лет работало и вдруг перестало. Обидно однако.


 
Aleksey Vyazmikin:

Какая то ерунда, вот код урезал вообще

На выходе

Прошу проверьте кто либо, а то может у меня терминал свихнулся.

Или это норма, и так и должно всё мусором заваливаться?

Освобождает буфер любого динамического массива и устанавливает размер нулевого измерения в 0.

При написании скриптов и индикаторов необходимость в использовании функции ArrayFree() может возникнуть не часто: так как при завершении работы скрипта вся использованная память сразу же освобождается, а в пользовательских индикаторах основная работа с массивами представляет собою доступ к индикаторным буферам, размеры которых автоматически управляются исполняющей подсистемой терминала.

Если в программе необходимо самостоятельно управлять памятью в сложных динамических условиях, то функция ArrayFree() позволит явным образом и немедленно освобождать память, занятую ненужным уже динамическим массивом.

Понимаете? Ненужным.

Естественно, что раз память от него освобождена, а потом вы её опять распределили при помощи задания размера массиву, то никто вам не гарантирует его содержимое.

Используйте инициализацию массива: ArrayInitialize()