не пойму, где собака порылась (кодинг)

 
есть код:
   ObjectCreate(o_name,OBJ_ARROW,0,Time[ibar],lprice);
   ObjectSet(o_name,OBJPROP_TIME1,Time[ibar]);
   ObjectSet(o_name,OBJPROP_PRICE1,lprice);
   ObjectSet(o_name,OBJPROP_COLOR,o_color);
   ObjectSet(o_name,OBJPROP_ARROWCODE,6);
в таком виде все отрабатывает, но нету проверки на успешность выполнения операций,
а так
   while( !ObjectCreate(o_name,OBJ_ARROW,0,Time[ibar],lprice) )
   {
   }
   while( !ObjectSet(o_name,OBJPROP_TIME1,Time[ibar]) )
   {
   }
   while( !ObjectSet(o_name,OBJPROP_PRICE1,lprice) )
   {
   }
   while( !ObjectSet(o_name,OBJPROP_COLOR,o_color) )
   {
   }
   while( !ObjectSet(o_name,OBJPROP_ARROWCODE,6) )
   {
   }
подвешивает терминал намертво, проц грузится на 100% , вроде цикл корректный, не пойму что за дела? (билд 211 от 15 октября)
 

Посмотрите здесь: Учебник по MQL4 - Стандартные функции - Графические объекты .

В частности, обратите внимание, все сандартные функции возвращают некоторое значение, которое в дальнейшем коде можн анализировать.

 

Может быть просто булевая операция некоректно трактуется попробуйте делать такое сравнение как, функция != 0

 

А вы почаще, почаще while используйте....

 

Вообще вайл как и фор это цикл, естественно в таких условиях программа зацикливается, причем без закономерных действий по решению проблеммы или выяснению причины, сразу не разглядел что-то, глубокий однако смысл в этом коде:)

Так нельзя сделать? К примеру, если для индикатора в теле процедуры старт, можно конечно и зациклить например для эксперта

if ( ObjectFind( "123" ) == -1 ) {
         if ( ObjectCreate( "123" ,OBJ_ARROW,0,Time[0], Close[0]) ) {
             ObjectSet("123",OBJPROP_COLOR, 0xFFFFFF );
         }
   } else {
       ObjectSet("123",OBJPROP_TIME1,Time[0]);
       ObjectSet("123",OBJPROP_PRICE1,Close[0]);
       ObjectSet("123",OBJPROP_COLOR, 0xFFFFFF );
   }
 
Integer:

А вы почаще, почаще while используйте....

а в чем проблема-то?
 
Есть сильное подозрение, что необходимо вставить функцию удаления объектов - ObjectDeleteAll(). Так как я проверил скрипт, и завешивания нет.
 
все уже давно и не раз смотрено
цикл выполняется пока условие истинно

Если выражение истинно, то оператор выполняется до тех пор, пока выражение не станет ложным. Если выражение ложно, то управление передается следующему оператору.
 
while(выражение)
оператор;
ObjectCreate и ObjectSet возвращают истину при успеншном выполнении
Создание объекта с указанным именем, тип и начальные координаты в указанном подокне графика. Число координат, связываемых с объектом, может быть от 1 до 3 в 
зависимости от типа. При успешном создании объекта функция возвращает TRUE, иначе FALSE.
Изменение значения указанного свойства объекта. В случае успеха функция возвращает TRUE, иначе FALSE.
вот когда все выполняется успешно цикл должен прерваться, т. к. вначале стоит "!"
 
Profi_R:
все уже давно и не раз смотрено
цикл выполняется пока условие истинно
[quote]Если выражение истинно, то оператор выполняется до тех пор, пока выражение не станет ложным. Если выражение ложно, то управление передается следующему оператору.

while(выражение)

оператор;
[/quote]
ObjectCreate и ObjectSet возвращают истину при успеншном выполнении
[quote]Создание объекта с указанным именем, тип и начальные координаты в указанном подокне графика. Число координат, связываемых с объектом, может быть от 1 до 3 в зависимости от типа. При успешном создании объекта функция возвращает TRUE, иначе FALSE.[/quote]

[quote]Изменение значения указанного свойства объекта. В случае успеха функция возвращает TRUE, иначе FALSE. [/quote]
вот когда все выполняется успешно цикл должен прерваться

Объясните для чего вам все это надо? для индикатора например, он все равно при непосредственной инициализации не всегда может получить дескриптор окна. Или для пользователя, который может удалить этот объект?
 
Rosh:
Есть сильное подозрение, что необходимо вставить функцию удаления объектов - ObjectDeleteAll(). Так как я проверил скрипт, и завешивания нет.



спасибо, щас попробую посмотреть код ошибки
 
Profi_R:
Integer:

А вы почаще, почаще while используйте....






xnsnet писал (а):

Вообще вайл как и фор это цикл, естественно в таких условиях программа зацикливается, причем без закономерных действий по решению проблеммы или выяснению причины, сразу не разглядел что-то, глубокий однако смысл в этом коде:)


а в чем проблема-то?


У меня нет проблем, я while не использую вообще:-)
Причина обращения: