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

 
Artyom Trishkin:

Может стоит отобразить в особенностях?

Попробую оформить.

 
Комментарии, не относящиеся к этой теме, были перенесены в "Вопросы от начинающих MQL4 MT4 MetaTrader 4".
 

Уважаемые веб дизайнеры сайта,

вот Вам скриншот сообщений, скажите пожалуйста какой собеседник сейчас выбран


Уже глаза на лоб лезят что бы понять кому пишешь ....

Пожалуйста пометьте цветами тех кому не ответил, тех кому ответил, и отдельным цветом того кому сейчас пишеш ...

 
Vladimir Pastushak:

Уважаемые веб дизайнеры сайта,

вот Вам скриншот сообщений, скажите пожалуйста какой собеседник сейчас выбран


Уже глаза на лоб лезят что бы понять кому пишешь ....

Пожалуйста пометьте цветами тех кому не ответил, тех кому ответил, и отдельным цветом того кому сейчас пишеш ...

2

Хотя согласен. Не всегда это замечаешь, контраста мало. 

 
Vladimir Pastushak:

вот Вам скриншот сообщений, скажите пожалуйста какой собеседник сейчас выбран

в хроме (71.0.3578.98) ок в FF (64) не видно совсем
 
Вообще хорошо было бы контрастности по всему сайту добавить
 

если возможность в MQL разыменовывать указатель *CObject ?

пробовал разные варианты, вот скрипт для теста, добавляю в связанный список 3 элемента Myclass и потом изменяю значения полей CMyclass, так все работает:

#include <Object.mqh>
#include <Arrays\List.mqh>
//+------------------------------------------------------------------+
class CMyclass:public CObject
  {
public:
   int               x;
   double            y;
   void              CMyclass(void):x(-1),y(-2.2) { }
  };
//+------------------------------------------------------------------+
void OnStart()
  {
   CList *base=new CList;
   CMyclass *result;
   for(int i=0;i<3;i++)
     {
      base.Add(new CMyclass);
      result=base.GetCurrentNode();
      result.x = 99;
      result.y = -555.5;
     }
   for(int i=0;i<3;i++)
     {
      result=base.GetNodeAtIndex(i);
      Print(result.x," : ",result.y);
     }
   delete base;
  }
//+------------------------------------------------------------------+

могу ли я изменять поля динамически созданных элементов CMyclass, без промежуточного указателя  CMyclass *result ?

примерно так: (CMyclass *)(base.GetCurrentNode()).x = 99;

PS: подозреваю, что нужно использовать typedef , но пока неудачно

 
Igor Makanu:

если возможность в MQL разыменовывать указатель *CObject ?

пробовал разные варианты, вот скрипт для теста, добавляю в связанный список 3 элемента Myclass и потом изменяю значения полей CMyclass, так все работает:

могу ли я изменять поля динамически созданных элементов CMyclass, без промежуточного указателя  CMyclass *result ?

примерно так: (CMyclass *)(base.GetCurrentNode()).x = 99;

PS: подозреваю, что нужно использовать typedef , но пока неудачно

Не знаю что там библиотечный CList делает, но я раньше делал так

#define alive(node)  (CheckPointer(node)==POINTER_DYNAMIC)
#define loopf(type, node)  for(type *o=alive(node)?node.First():NULL; alive(o); o=alive(o)?(alive(o.Next())?o.Next():NULL):NULL)
//.....
      loopf(COrder, corr){
         if((fabs(o.StopLoss()-sl)>=_point(o.Symbol())) || (fabs(o.TakeProfit()-tp)>=_point(o.Symbol()))){
            o.SLTP(sl, tp);
         }
      }
//.....
 
Ilya Malev:

Не знаю что там библиотечный CList делает, но я раньше делал так

спс, но не это ищу, Ваш пример это по сути преобразование типов через вызов функции

ЗЫ: я никак к работе с указателями в MQL не привыкну, вот и пытаюсь разобраться, пример вроде простой и рабочий, но пока решения не нашел как привести результат GetCurrentNode()  --> CObject *   к моему типу CMyclass.... как вариант можно конечно вымудриться через конструктор CMyclass , но надеюсь, что есть изящное решение через приведение типов в MQL

 
Igor Makanu:

спс, но не это ищу, Ваш пример это по сути преобразование типов через вызов функции

ЗЫ: я никак к работе с указателями в MQL не привыкну, вот и пытаюсь разобраться, пример вроде простой и рабочий, но пока решения не нашел как привести результат GetCurrentNode()  --> CObject *   к моему типу CMyclass.... как вариант можно конечно вымудриться через конструктор CMyclass , но надеюсь, что есть изящное решение через приведение типов в MQL

У меня там нет функций, а решается именно та задача, которую Вы описали. базовый класс списка у меня CNode ( в котором методы Prev(), Next() и т.п. ), а в цикле идет обращение к полям COrder, который является его наследником. Цикл объявляется в дефайнах 1 раз и далее используется везде.

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