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

 
Roman:

Билд 2530

На третьем вложении структуры, не появляется интеллисенс.

интеллект IntelliSense продолжает доставлять ))


т.е. одна подсказка это все, на что ты можешь рассчитывать 

 
Nikolai Karetnikov:

интеллект IntelliSense продолжает доставлять ))

т.е. одна подсказка это все, на что ты можешь рассчитывать 

Мой пост касался вложенных структур, на третьем вложении не появляется выбор интеллисенса.
Что очень печалит, так как вложенные структуры планировалось использовать как раз под выбор в интеллисенсе. 
А раз он не появляется, то нужно возвращаться в структуру, и смотреть что там за поля. Не айс. 
Хотелось бы чтоб поправили.

Что касается вашего примера, для стандартных MQL функций по моему в подсказках всё ясно.
Если не понятна подсказка, ставишь курсор на функцию и жмёшь F1

 
Mihail Matkovskij:

Подставил функцию ObjectDeleteAll сначала в свой пример:

Затем в индикатор.

Оказалось использовать ObjectDeleteAll в моём проекте проще простого. Для удаления всех объектов достаточно было поменять префикс всего 3 раза и, соответственно, 3 раза вызвать ObjectDeleteAll. И, в результате, график чист. В языке MQL5 много тонкостей. Но вместе с тем он является очень продуманным.

Спасибо всем, кто оказывал мне помощь в решении данной проблемы!

И опять у вас здесь:

    trend = new CChartObjectTrend();
    if(trend.Create(0, "trend"+(string)i, 0, time[shift], low[shift], time[shift], high[shift]))
      listOfTrendLines.Add(trend);
    else
      delete trend;

потенциальная дырка, в которую потечёт. Посмотрите что возвращает метод Add()

(Понимаю, что тест, понимаю, что для проверки и так сойдёт, но уж коли проверять результат создания, то почему не проверять результат добавления? Дисциплинирует на будущее)
 
Artyom Trishkin:

И опять у вас здесь:

потенциальная дырка, в которую потечёт. Посмотрите что возвращает метод Add()

(Понимаю, что тест, понимаю, что для проверки и так сойдёт, но уж коли проверять результат создания, то почему не проверять результат добавления? Дисциплинирует на будущее)

Ну сделать так:

    trend = new CChartObjectTrend();
    if(trend.Create(0, "trend"+(string)i, 0, time[shift], low[shift], time[shift], high[shift])) {
      if(!listOfTrendLines.Add(trend))
        delete trend;
    }
    else
      delete trend;

Всё. Теперь нет дырки?

Это вообще тестовая программа и со своей задачей она справилась. Больше от нее мне ничего и не нужно. А если бы она была рабочей то и подход был бы другой и концепция совсем другая. Там и сообщения об ошибках идут из каждой критически важной точки с указанием строки (__LINE__) , а также имени функции (__FUNCTION__) ... Так что, иногда мне и отладкой пользоваться не обязательно. Просто смотрю, название модуля, номер строки, имя функции...

 

Всем доброго! Проблема следующая...

После обновления пропал ярлык терминала MT5, как на рабочем столе, так и в корневой папке. Переустановил. После перезагрузки компа история повторилась. В чем проблема? Кто нибудь сталкивался с подобным?

 
Artyom Trishkin:

И опять у вас здесь:

потенциальная дырка, в которую потечёт. Посмотрите что возвращает метод Add()

(Понимаю, что тест, понимаю, что для проверки и так сойдёт, но уж коли проверять результат создания, то почему не проверять результат добавления? Дисциплинирует на будущее)

А в каких случаях listOfTrendLines.Add может не сработать? Просто мне они не известны. Хоть я и придерживаюсь того принципа, где "лишних проверок не бывает" (с). Но можно гипотетически предположить , что это может дойти до паранойи. Ладно еще метод Create класса графического объекта может не сработать. Но он всегда отрабатывает чётко, если код написан грамотно и программа дает объектам нормальные имена. Но допустим, в его использовании могут быть косяки... Но как метод Add может вернуть фальшь в нормальных условиях. Или функция ArrayResize (которая, к стати, используется в данном методе), как она может вернуть результат отличный от new_size. Разве что только памяти не хватит... :) Но где вы видели современные устройства с таким большим дефицитом памяти?!... :)

 
Mihail Matkovskij:

А в каких случаях listOfTrendLines.Add может не сработать? Просто мне они не известны. Хоть я и придерживаюсь того принципа, где "лишних проверок не бывает" (с). Но можно гипотетически предположить , что это может дойти до паранойи. Ладно еще метод Create класса графического объекта может не сработать. Но он всегда отрабатывает чётко, если код написан грамотно и программа дает объектам нормальные имена. Но допустим, в его использовании могут быть косяки... Но как метод Add может вернуть фальшь в нормальных условиях. Или функция ArrayResize (которая, к стати, используется в данном методе), как она может вернуть результат отличный от new_size. Разве что только памяти не хватит... :) Но где вы видели современную систему с дефицитом памяти?!... :)

Vps обычно.
P.s. мне кажется ты не справедливо с Алексеем обошолся все таки именно он дал первый и правильный совет и как бы то ни было именно он тебе помог 
 
Mihail Matkovskij:

Подставил функцию ObjectDeleteAll сначала в свой пример:

Затем в индикатор.

Оказалось использовать ObjectDeleteAll в моём проекте проще простого. Для удаления всех объектов достаточно было поменять префикс всего 3 раза и, соответственно, 3 раза вызвать ObjectDeleteAll. И, в результате, график чист. В языке MQL5 много тонкостей. Но вместе с тем он является очень продуманным.

Спасибо всем, кто оказывал мне помощь в решении данной проблемы!

Интересно, а вы посмотрели документацию или просто взяли описание функции из моего сообщения?

Я так подозреваю, что у вас графические объекты это только трендовые. Если это так, то зачем вам префикс? Там ведь есть ещё удаление по типу объекта

int  ObjectsDeleteAll(
   long  chart_id,            // идентификатор графика
   int   sub_window=-1,       // индекс окна
   int   type=-1              // тип объекта для удаления
   );

соответственно ничего не надо было менять в проекте, а просто написать

ObjectsDeleteAll(0, 0, OBJ_TREND);
)))))))))))))
 
Aleksei Beliakov:
Vps обычно.
P.s. мне кажется ты не справедливо с Алексеем обошолся все таки именно он дал первый и правильный совет и как бы то ни было именно он тебе помог 

И в чём же несправедливость стесняюсь спросить?... По моему, я нормально отношусь к Алексею. А ты что его родственник?

 
Alexey Viktorov:

Интересно, а вы посмотрели документацию или просто взяли описание функции из моего сообщения?

Я так подозреваю, что у вас графические объекты это только трендовые. Если это так, то зачем вам префикс? Там ведь есть ещё удаление по типу объекта

соответственно ничего не надо было менять в проекте, а просто написать

)))))))))))))

Это лишь частный случай. Префикс - общий и универсальный. При том, что удаление всех трендовых линий коснётся и не принадлежащих программе объектов.

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