Небольшой цикл

 

Здравствуйте. Что не так в следующем коде?

int count()
{

int count=0;

for(int i=0; ; i++)
{
if(ObjectFind(0,IntegerToString(i)))
{
count+=1;
}
else break;

}
return count;

}

Он должен подсчитывать количество объектов. Но, почему-то, функция всегда возвращает единицу. Объектам даны имена именно по такому принципу, как в цикле for. И объекты существуют на графике, и их не один)
 

 
Igor Knyazkov:

Здравствуйте. Что не так в следующем коде?

int count()
{

int count=0;

for(int i=0; ; i++)
{
if(ObjectFind(0,IntegerToString(i)))
{
count+=1;
}
else break;

}
return count;

}

Он должен подсчитывать количество объектов. Но, почему-то, функция всегда возвращает единицу. Объектам даны имена именно по такому принципу, как в цикле for. И объекты существуют на графике, и их не один)
 

А что возвращает функция ObjectFind()?

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

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


 
Alexey Viktorov:
А что возвращает функция ObjectFind()?
Я так понимаю, вопрос наводящий?) И ответ на него Вы уже знаете)) Индекс окна она возвращает)
 

+ что-то с циклом не то... 

(это тоже наводящий вопрос, на внимательность) 

 
Alexey Viktorov:
А что возвращает функция ObjectFind()?
Ну да) Че-то я не подумал) 
 
Igor Knyazkov:
Я так понимаю, вопрос наводящий?) И ответ на него Вы уже знаете)) Индекс окна она возвращает)
Вопрос именно наводящий. Если знаешь что возвращает функция, наверное и проверку выполнения функции должен был сделать правильно. Ан нет...
 
И ещё. Не нравится мне одинаковые имена функции и переменной. Точно уже не помню, но кажется недопустимо это в mql4.
 
Alexey Viktorov:
А что возвращает функция ObjectFind()?

Хорошо...А тут, что не так?)

int count()
{

int count=0;

for(int i=0; ; i++)
{
if(ObjectFind(0,IntegerToString(i))==-1) break;
count+=1;

}
return count;

}
 
Igor Knyazkov:

Хорошо...А тут, что не так?)

int count()
{

int count=0;

for(int i=0; ; i++)
{
if(ObjectFind(0,IntegerToString(i))==-1) break;
count+=1;

}
return count;

}
int count()
  {

   int count=0;
   int total=ObjectsTotal(0);
   for(int i=0;i<total; i++)
     {
      if(ObjectFind(0,IntegerToString(i))!=-1)
         count++;

     }
   return count;

  }
....
 
Sergey Gritsay:
int count()
  {

   int count=0;
   int total=ObjectsTotal(0);
   for(int i=0;i<total; i++)
     {
      if(ObjectFind(0,IntegerToString(i))!=-1)
         count++;

     }
   return count;

  }
....
Спасибо.
 
Igor Knyazkov:

Хорошо...А тут, что не так?)

int count()
{

int count=0;

for(int i=0; ; i++)
{
if(ObjectFind(0,IntegerToString(i))==-1) break;
count+=1;

}
return count;

}
break прерывает цикл.
Причина обращения: