Ошибка = object name passed to ObjectSet function cannot be an uninitialized or empty string - страница 2

 

не помогло:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double ObjectGetFunc(string name,int prop_id)
  {
   if(name!="")return(ObjectGet(name,prop_id));
   else return(-1);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int ObjectFindFunc(string name)
  {
   if(name!="")return(ObjectFind(name));
   else return(-1);

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool ObjectSetFunc(string name,int prop_id,double value)
  {
   if(name!="")return(ObjectSet(name,prop_id,value));
   else return(false);
  }
//+------------------------------------------------------------------+


проверил через скрипт ошибка возвращается, когда я пытаюсь в поле name заполнить "" тоесть ничего, но для этого я и сделал проверку если name = "" то ничего не возвращать, вернее возвращать ошибку.

 

Проверяйте существует ли объект на графике функцией ObjectFind() и все будет ok

int k=ObjectsTotal()-1,i;
   for(i=k;i>=0;i--) {
      if(ObjectFind(ObjectName(i))!=-1)   {
         /*другой код*/
      }
   }
 

Сенкс проверим

 

Написал не подумав.

Пофиг какой объект и как его имя, если имя не "" то он не будет возвращать ошибки, проблема в возврате ошибок, когда стоит значение "" Я не говорю что у меня такое значение я ставлю, аноборот стоит проверка, если имя задано "" то мы вообще не выполняем функции

 
name!=""
значит это условие верно(даёт true в случае, если name=="") и программа идет на выполнение функции, или ошибка идёт из другого места.
 

Ошгибку нашел.


int checksignal(string name="123")
  {
   int signal;
   if(ObjectFindFunc(name)==-1)return(0);

   string nameline=""; // Верный Вариант
   string nameline; // Не верный вараинт
   double Touchh;
   if(TouchPips>0)Touchh=TouchPips*Point;

// Sell
   if(!LineFinish(name)        && ObjectFindFunc(name)!=-1 && Open[1]<ObjectGetValueByShift(name,1) && Close[0]+Touchh>=ObjectGetValueByShift(name,0)){signal=2;nameline=name;}
   if(!LineFinish(name+"0_1" ) &&   ObjectFindFunc(name+"0_1")!=-1&&Open[1]<ObjectGetValueByShift(name+"0_1",0) && Close[0]+Touchh>=ObjectGetValueByShift(name+"0_1",0) ){signal=2;nameline=name+"0_1";}
   if(!LineFinish(name+"0_2" ) &&   ObjectFindFunc(name+"0_2")!=-1&&Open[1]<ObjectGetValueByShift(name+"0_2",0) && Close[0]+Touchh>=ObjectGetValueByShift(name+"0_2",0) ){signal=2;nameline=name+"0_2";}
   if(!LineFinish(name+"0_3" ) &&   ObjectFindFunc(name+"0_3")!=-1&&Open[1]<ObjectGetValueByShift(name+"0_3",0) && Close[0]+Touchh>=ObjectGetValueByShift(name+"0_3",0) ){signal=2;nameline=name+"0_3";}
   if(!LineFinish(name+"0_4" ) &&   ObjectFindFunc(name+"0_4")!=-1&&Open[1]<ObjectGetValueByShift(name+"0_4",0) && Close[0]+Touchh>=ObjectGetValueByShift(name+"0_4",0) ){signal=2;nameline=name+"0_4";}
   if(!LineFinish(name+"0_5" ) &&   ObjectFindFunc(name+"0_5")!=-1&&Open[1]<ObjectGetValueByShift(name+"0_5",0) && Close[0]+Touchh>=ObjectGetValueByShift(name+"0_5",0) ){signal=2;nameline=name+"0_5";}

   if(ZERKALO)
     {
      for(int y=1;y<=ZerkaloKol;y++)
        {
         if((nameZlineZerkaloRe && nameZline==name) || (nameZline2ZerkaloRe && nameZline2==name) || (nameZlineDnZerkaloRe && nameZlineDn==name) || (nameZlineDn2ZerkaloRe && nameZlineDn2==name)
            || (nameZline5ZerkaloRe && nameZline5==name) || (nameZline6ZerkaloRe && nameZline6==name) || (nameZline7ZerkaloRe && nameZline7==name) || (nameZline8ZerkaloRe && nameZline8==name))y=y+1;

         if(!LineFinish(name+"0_1Z"+y ) &&   ObjectFindFunc(name+"0_1Z"+y)!=-1&&Open[1]<ObjectGetValueByShift(name+"0_1Z"+y,0) && Close[0]+Touchh>=ObjectGetValueByShift(name+"0_1Z"+y,0)){signal=2;nameline=name+"0_1Z"+y;}
         if(!LineFinish(name+"0_2Z"+y ) &&   ObjectFindFunc(name+"0_2Z"+y)!=-1&&Open[1]<ObjectGetValueByShift(name+"0_2Z"+y,0) && Close[0]+Touchh>=ObjectGetValueByShift(name+"0_2Z"+y,0)){signal=2;nameline=name+"0_2Z"+y;}
         if(!LineFinish(name+"0_3Z"+y ) &&   ObjectFindFunc(name+"0_3Z"+y)!=-1&&Open[1]<ObjectGetValueByShift(name+"0_3Z"+y,0) && Close[0]+Touchh>=ObjectGetValueByShift(name+"0_3Z"+y,0)){signal=2;nameline=name+"0_3Z"+y;}
         if(!LineFinish(name+"0_4Z"+y ) &&   ObjectFindFunc(name+"0_4Z"+y)!=-1&&Open[1]<ObjectGetValueByShift(name+"0_4Z"+y,0) && Close[0]+Touchh>=ObjectGetValueByShift(name+"0_4Z"+y,0)){signal=2;nameline=name+"0_4Z"+y;}
         if(!LineFinish(name+"0_5Z"+y ) &&   ObjectFindFunc(name+"0_5Z"+y)!=-1&&Open[1]<ObjectGetValueByShift(name+"0_5Z"+y,0) && Close[0]+Touchh>=ObjectGetValueByShift(name+"0_5Z"+y,0)){signal=2;nameline=name+"0_5Z"+y;}
        }
     }
// BUY
   if(!LineFinish(name)        && ObjectFindFunc(name)!=-1 && Open[0]>ObjectGetValueByShift(name,0) && Close[0]-Touchh<=ObjectGetValueByShift(name,0)){signal=1;nameline=name;}
   if(!LineFinish(name+"0_1" ) &&   ObjectFindFunc(name+"0_1")!=-1&&Open[0]>ObjectGetValueByShift(name+"0_1",0) && Close[0]-Touchh<=ObjectGetValueByShift(name+"0_1",0)){signal=1;nameline=name+"0_1";}
   if(!LineFinish(name+"0_2" ) &&   ObjectFindFunc(name+"0_2")!=-1&&Open[0]>ObjectGetValueByShift(name+"0_2",0) && Close[0]-Touchh<=ObjectGetValueByShift(name+"0_2",0)){signal=1;nameline=name+"0_2";}
   if(!LineFinish(name+"0_3" ) &&   ObjectFindFunc(name+"0_3")!=-1&&Open[0]>ObjectGetValueByShift(name+"0_3",0) && Close[0]-Touchh<=ObjectGetValueByShift(name+"0_3",0)){signal=1;nameline=name+"0_3";}
   if(!LineFinish(name+"0_4" ) &&   ObjectFindFunc(name+"0_4")!=-1&&Open[0]>ObjectGetValueByShift(name+"0_4",0) && Close[0]-Touchh<=ObjectGetValueByShift(name+"0_4",0)){signal=1;nameline=name+"0_4";}
   if(!LineFinish(name+"0_5" ) &&   ObjectFindFunc(name+"0_5")!=-1&&Open[0]>ObjectGetValueByShift(name+"0_5",0) && Close[0]-Touchh<=ObjectGetValueByShift(name+"0_5",0)){signal=1;nameline=name+"0_5";}

   if(ZERKALO)
     {
      for(y=1;y<=ZerkaloKol;y++)
        {
         if((nameZlineZerkaloRe && nameZline==name) || (nameZline2ZerkaloRe && nameZline2==name) || (nameZlineDnZerkaloRe && nameZlineDn==name) || (nameZlineDn2ZerkaloRe && nameZlineDn2==name)
            || (nameZline5ZerkaloRe && nameZline5==name) || (nameZline6ZerkaloRe && nameZline6==name) || (nameZline7ZerkaloRe && nameZline7==name) || (nameZline8ZerkaloRe && nameZline8==name))y=y+1;

         if(!LineFinish(name+"0_1Z"+y ) &&   ObjectFindFunc(name+"0_1Z"+y)!=-1&&Open[0]>ObjectGetValueByShift(name+"0_1Z"+y,0) && Close[0]-Touchh<=ObjectGetValueByShift(name+"0_1Z"+y,0)){signal=1;nameline=name+"0_1Z"+y;}
         if(!LineFinish(name+"0_2Z"+y ) &&   ObjectFindFunc(name+"0_2Z"+y)!=-1&&Open[0]>ObjectGetValueByShift(name+"0_2Z"+y,0) && Close[0]-Touchh<=ObjectGetValueByShift(name+"0_2Z"+y,0)){signal=1;nameline=name+"0_2Z"+y;}
         if(!LineFinish(name+"0_3Z"+y ) &&   ObjectFindFunc(name+"0_3Z"+y)!=-1&&Open[0]>ObjectGetValueByShift(name+"0_3Z"+y,0) && Close[0]-Touchh<=ObjectGetValueByShift(name+"0_3Z"+y,0)){signal=1;nameline=name+"0_3Z"+y;}
         if(!LineFinish(name+"0_4Z"+y ) &&   ObjectFindFunc(name+"0_4Z"+y)!=-1&&Open[0]>ObjectGetValueByShift(name+"0_4Z"+y,0) && Close[0]-Touchh<=ObjectGetValueByShift(name+"0_4Z"+y,0)){signal=1;nameline=name+"0_4Z"+y;}
         if(!LineFinish(name+"0_5Z"+y ) &&   ObjectFindFunc(name+"0_5Z"+y)!=-1&&Open[0]>ObjectGetValueByShift(name+"0_5Z"+y,0) && Close[0]-Touchh<=ObjectGetValueByShift(name+"0_5Z"+y,0)){signal=1;nameline=name+"0_5Z"+y;}
        }
     }
   if(nameline!=""){if(ObjectGetFunc(nameline,OBJPROP_WIDTH)>1){ObjectSetFunc(nameline,OBJPROP_WIDTH,1);} /*ObjectSetFunc(nameline,OBJPROP_STYLE,STYLE_DOT);*/ namewer=nameline; 
   SetLabelWork(namewer+"Worked",namewer,ObjectGetFunc(namewer,OBJPROP_COLOR),TimeCurrent(),200,10);
   return(signal);}
   
  }
Причина обращения: