Igor Knyazkov:
А что возвращает функция ObjectFind()?Здравствуйте. Что не так в следующем коде?
int count()
{
int count=0;
for(int i=0; ; i++)
{
if(ObjectFind(0,IntegerToString(i)))
{
count+=1;
}
else break;
}
return count;
}
{
int count=0;
for(int i=0; ; i++)
{
if(ObjectFind(0,IntegerToString(i)))
{
count+=1;
}
else break;
}
return count;
}
Он должен подсчитывать количество объектов. Но, почему-то, функция всегда возвращает единицу. Объектам даны имена именно по такому принципу, как в цикле for. И объекты существуют на графике, и их не один)
Возвращаемое значение
В случае удачи функция возвращает номер подокна (0 означает главное окно графика), в котором находится найденный объект. Если объект не найден, то функция возвращает отрицательное число.
Я так понимаю, вопрос наводящий?) И ответ на него Вы уже знаете)) Индекс окна она возвращает)
+ что-то с циклом не то...
(это тоже наводящий вопрос, на внимательность)
Ну да) Че-то я не подумал)
Igor Knyazkov:
Я так понимаю, вопрос наводящий?) И ответ на него Вы уже знаете)) Индекс окна она возвращает)
Вопрос именно наводящий. Если знаешь что возвращает функция, наверное и проверку выполнения функции должен был сделать правильно. Ан нет...
Я так понимаю, вопрос наводящий?) И ответ на него Вы уже знаете)) Индекс окна она возвращает)
И ещё. Не нравится мне одинаковые имена функции и переменной. Точно уже не помню, но кажется недопустимо это в mql4.
Хорошо...А тут, что не так?)
int count()
{
int count=0;
for(int i=0; ; i++)
{
if(ObjectFind(0,IntegerToString(i))==-1) break;
count+=1;
}
return 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=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;
}
....
{
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;
}
....{
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:
break прерывает цикл.
Хорошо...А тут, что не так?)
int count()
{
int count=0;
for(int i=0; ; i++)
{
if(ObjectFind(0,IntegerToString(i))==-1) break;
count+=1;
}
return count;
}
{
int count=0;
for(int i=0; ; i++)
{
if(ObjectFind(0,IntegerToString(i))==-1) break;
count+=1;
}
return count;
}
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте. Что не так в следующем коде?
{
int count=0;
for(int i=0; ; i++)
{
if(ObjectFind(0,IntegerToString(i)))
{
count+=1;
}
else break;
}
return count;
}
Он должен подсчитывать количество объектов. Но, почему-то, функция всегда возвращает единицу. Объектам даны имена именно по такому принципу, как в цикле for. И объекты существуют на графике, и их не один)