Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пополняй свой счет через PayPal
Sergey Sartakov
1286
Sergey Sartakov 2013.09.14 22:39 

Вынужден так вот удалять графический объект:

     if ( ObjectGet("BUY", OBJPROP_XDISTANCE) != i_Xdistance ||
          (ObjectGet("BUY", OBJPROP_YDISTANCE) != i_Ydistance)
         )
      {
         while (ObjectFind("BUY") == 0)
         {
            bool b_DeleteRes = ObjectDelete("BUY");
            int i_LastError = GetLastError();
//          Print ("b_DeleteRes = ",b_DeleteRes," i_LastError = ",i_LastError );
            WindowRedraw(); 
         }
      }

Объект удаляется так это с 500 и более попыток...

Причем в каждой попытке ObjectDelete("BUY") возвращает true и GetLastError() = 0

Может кто с такой фишкой сталкивался ?

Alexander
2441
Alexander 2013.09.14 23:12  
Попробовал, удаляется с первой попытки. Попробуйте перегрузить компьютер.
Sergey Sartakov
1286
Sergey Sartakov 2013.09.15 22:06  
Roger:
Попробовал, удаляется с первой попытки. Попробуйте перегрузить компьютер.


Да, на демо счете все нормально, а вот в тестере не нормально....

Ihor Herasko
8428
Ihor Herasko 2013.09.16 06:28  

Дело в том, что ObjectDelete возвращает false только в том случае, если объект не найден. Успешное завершение функции вовсе не означает реальное удаление объекта. Подтвердить удаление объекта можно лишь повторным вызовом ObjectFind, которое вернет значение меньше нуля.

Если ObjectDelete возвращает true, но при этом объект в действительности не удален, то это означает, что объект в данный момент перемещается мышью.

Этот такая недокументированная фича МТ4, которая позволяет отследить перемещение графических объектов мышью. В противном случае с графическим управлением ничего невозможно было бы сделать.

Sergey Sartakov
1286
Sergey Sartakov 2013.09.16 10:37  
Scriptong:

Дело в том, что ObjectDelete возвращает false только в том случае, если объект не найден. Успешное завершение функции вовсе не означает реальное удаление объекта. Подтвердить удаление объекта можно лишь повторным вызовом ObjectFind, которое вернет значение меньше нуля.

Если ObjectDelete возвращает true, но при этом объект в действительности не удален, то это означает, что объект в данный момент перемещается мышью.

Этот такая недокументированная фича МТ4, которая позволяет отследить перемещение графических объектов мышью. В противном случае с графическим управлением ничего невозможно было бы сделать.

Спасибо, понял.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий