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

 
Contender:

 

А так:

 

string var1[1][2] =  {{"dfdffd","dfdfdfd"}};

благодарю....вопрос снят.
 

Приветствую уважаемое сообщество.

Не смог найти на сайте, и сам не пойму уже пол дня, почему этот код пишет ошибку. Подскажите если не затруднит.

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//---
   string nameObject="testObject";
   ChartRedraw(0);
   ResetLastError();
   if(ObjectFind(0,nameObject)>=0){
      if(!ObjectDelete(0,nameObject)){
         if(_LastError>0){
            Print("1 Ошибка №",_LastError);
            ResetLastError();
         }
      }
   }
   ChartRedraw(0);
   if(_LastError>0){
      Print("2 Ошибка №",_LastError); // Тут ошибка №4202 <Графический объект не найден>
      ResetLastError();
   }
   if(!ObjectCreate(0,nameObject,OBJ_LABEL,0,0,0)){
      if(_LastError>0){
         Print("3 Ошибка №",_LastError);
         ResetLastError();
      }
   }else{
      ObjectSetInteger(0,nameObject,OBJPROP_CORNER,1);
   }
   if(_LastError>0){
      Print("4 Ошибка №",_LastError);
      ResetLastError();
   }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
svds75:

Приветствую уважаемое сообщество.

Не смог найти на сайте, и сам не пойму уже пол дня, почему этот код пишет ошибку. Подскажите если не затруднит.

а зачем удалять объект?
 
sergeev:
а зачем удалять объект?
На самом деле программа более сложная. Я ее уже упростил до безобразия что-бы понять в чем проблема. Но так и не понял.
 
svds75:
На самом деле программа более сложная. Я ее уже упростил до безобразия что-бы понять в чем проблема. Но так и не понял.
Попробуйте понять, почему сообщение только одно, а не каждый тик, тогда вопросов не будет.
 
svds75:
На самом деле программа более сложная. Я ее уже упростил до безобразия что-бы понять в чем проблема. Но так и не понял.

судя по стилистике кода еще можно упрощать. коментируйте чуток

может в if/else запутался?

 
svds75:

Приветствую уважаемое сообщество.

Не смог найти на сайте, и сам не пойму уже пол дня, почему этот код пишет ошибку. Подскажите если не затруднит.

Пир таком оформлении код лучше читается и сразу видна ошибка:

//---
   string nameObject="testObject";
   ChartRedraw(0);
   ResetLastError();
   if(ObjectFind(0,nameObject)>=0)     // конечно объект не найден
     {
      if(!ObjectDelete(0,nameObject))
        {
         if(_LastError>0)
           {
            Print("1 Ошибка №",_LastError);
            ResetLastError();
           }
        }
     }
   ChartRedraw(0);
   if(_LastError>0)
     {                                 // поэтому сразу переходим сюда:
      Print("2 Ошибка №",_LastError);  // Тут ошибка №4202 <Графический объект не найден>
      ResetLastError();
     }
 
mql5:
Попробуйте понять, почему сообщение только одно, а не каждый тик, тогда вопросов не будет.
Извините, не понял. Возможно Вы знаете ответ, и дали мне подсказку. Об этом я тоже думал, вот если бы еще сказали какая функция, ObjectFind() или ObjectDelete() пишет в _LastError ошибку, или еще какая, может до меня бы и дошло.
sergeev:

судя по стилистике кода еще можно упрощать. коментируйте чуток

может в if/else запутался?

Я перепробовал много вариантов (даже в данном коде), не говоря уже о месте применения. А if/else ниже так вообще вроде можно удалить и ошибка остается.

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

 
barabashkakvn:

Пир таком оформлении код лучше читается и сразу видна ошибка:

А в чем ошибка то? Неужели даже если ты знаеш что объекта нет, его нельзя проверить на существование? 

А по поводу оформления, как говорится "на вкус и цвет..."

 
svds75:

А в чем ошибка то? Неужели даже если ты знаеш что объекта нет, его нельзя проверить на существование? 

А по поводу оформления, как говорится "на вкус и цвет..."

ObjectFind

Возвращаемое значение

В случае удачи функция возвращает номер подокна (0 означает главное окно графика), в котором находится найденный объект. Если объект не найден, то функция возвращает отрицательное число. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().

Если объект не найден - то это и есть ошибка. При этом сама функция ObjectFind вернет отрицательное число, а номер ошибки можно получить.

 Вот так нагляднее:

//---
   string nameObject="testObject";
   ChartRedraw(0);
   ResetLastError();
   int find=ObjectFind(0,nameObject);
   if(find>=0)     // конечно объект не найден
     {
      if(!ObjectDelete(0,nameObject))

 Запустите в отладке и посмотрите значение переменной "find"

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