ROBOTRADING - Форум по автоматизированной и ручной торговле на финансовых рынках.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



!!! Очередной идиотизм...

Сообщений 1 страница 3 из 3

1

Очередной идеодизм, от МТ... Причем не просто, а опять нахрен ни кем не обнаруженный, вернее скажем так я не нашел, вопроса об этом на форуме...

Итак...

Предположим вы хотите перчислисть все обьекты на графике... Ну там линии, прямоугольники... и пр. ОК, это просто

Берем "обьект тотал", и в цикле шуршим от нуля до этого количества... :)) Перечесляем и получаем имя обьекта по его индексу...  Радости полные штаны, все работает как часы... Но...

НО! :)) Допустим вам надо не просто их перечислить и там свойства какие-то посмотреть, ну и скажем еще и потереть некоторые из них... Отлично, скажете вы... -  в чем проблема-то, есть же функция "обьект делит" ... Все просто перечесляем, получаем имя по индексы  и трем обьект по имени. НО! Опять но... :)) При стирании индекс-то уедет... Да, ха-ха проблема... :)) Ну какая опять скажете вы нахрен проблема, так просто иди по индексу сзади... Ну типа чтобы после стирания сьезжали индексы только те что мы уже просмотрели... ОТЛИЧНО.... Суперское решение... :)) Кретенизм конечно, так НЕ ДЕЛАЕТСЯ в правильных языках... Делается примерно так - Запрашиваем тотал, да и не плохо было бы и еще с вилдкардом, или регекспом, но не суть... Допустим, мы хотим сделать, как положенно! с точки зрения языков программирования, а не удобства... ОК, значит продолжим - итак -  запрашиваем тотал, обьявляем начало транзакции, трем обьекты, обьявляем конец транзакции, или отмену... Все... После коммита, все обьекты помеченные для удаления удаляются... Если комита не было, а был дискадр, то просто метки удаляются... Точнее уже не важно, что там делается... А важно, что отмена... означает ничего не делать...

Ну дык, опять я тут мета-квотеров учу... Учитель нашелся... Ага... :)) Обьясняю.... !!! Да, вроде, все рабоает с удалением... Бля... А вот с добавление нахрен, вооще... Счас матом ругаться начну... ОКАЗЫВАЕТСЯ что перечесление обьектов по индексу, идет не по их порядку рождения... А по А-Л-Ф-А-В-И-Т-У... То есть, если мы добавляем обьект, начинающийся на букву которая  идет раньше чем некоторый обьект который уже есть в этом иннумераторе... Ну в этом списке... То он будет добавлен с этот список раньше чем уже существующий обьект... Ну тоесть вы запросли тотал, стали перчислять обьеты, и добавлять новые по мере надобности... И ваш список весь уехал... Те обьеты которые вы еще не просмотрели могут оказаться в конце, за тем номером который вы прошли...

Нда... То есть даже и не знаю, уверен, что столько народу на этом форуме перебирая обьекты об этой фиче :)) мета-терминала и догадывалась... И думала, что это за глюки при работе с обьектами...

Код:
//+------------------------------------------------------------------+
//|                                                     идеотизм.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
   int i;
   for( i=0;i<10;i++)
      ObjectCreate("O"+i,OBJ_HLINE,0,0,Ask+i*Point );
   
   Print("===================1====================");
   int t=ObjectsTotal();
   Print("T:",t);
   for( i=t-1;i>=0;i--)
      Print("#",i,"n:",ObjectName(i));
   
   Print("===================2=====================");
   
   Print("===================2.0=====================");
   
   for( i=0;i<3;i++)
      ObjectCreate("AO"+i,OBJ_HLINE,0,0,Ask+i*Point );
   
   t=ObjectsTotal();
   Print("T:",t);
   for( i=t-1;i>=0;i--)
      Print("#",i,"n:",ObjectName(i));
      
   for( i=0;i<3;i++)
      ObjectCreate("ZO"+i,OBJ_HLINE,0,0,Ask+i*Point );
   
   t=ObjectsTotal();
   Print("T:",t);
   for( i=t-1;i>=0;i--)
      Print("#",i,"n:",ObjectName(i));         
   
   return(0);
  }
//+------------------------------------------------------------------+

0

2

Ну что я говорил... :)) Опять забанили... Слабаки...

0

3

Суцки... Написать на том форуме не дают... А там народ просто какой-то бред гонит...

Похоже там  90% народа так и не поняло про что я говорил... Некий форекстулс пишет, "маленький код" и "привычка..." О Боги, ну что же все так тупят...

Обьясняю - ПОЛЬЗОВАТЬСЯ ПЕРЕЧИСЛЕНИЕМ ОБЬЕКТОВ НЕЛЬЗЯ ... НЕЛЬЗЯ НАПИСАТЬ ТАКОЙ "КОД" - который-бы работал корректно... НЕЛЬЗЯ В ПРИНЦИПЕ.... ПО ОПРЕДЕЛЕНИЮ... МАТЕМАТИЧЕСКИ доказано, что что-бы Вы не написали все равно это будет ошибка...   И код будет работать  с ошибками. Я не знаю как еще написать... НЕСУЩЕСТВУЕТ такого кода...

Для особо одареных и упрямых типа форекс тулса - есть такое понятие как атомарность операции и монопользый доступ к обьекту... Список обьектов это обьект который  нельзя захватить для монопольной работы с ним... А при такой идиотской организации этого списка обьектов, имеется ввиду "отсортированность" ...  Любая операция с отсортированным  списком  будет приводить к тому что порядок следования обьектов будет  меняться. Причем любая а не только со своими обьектами.

Вообщем мне не охота долго обьяснять... И пишу я это, потому, что мне кажется что и разработчики-то не поняли своей ГРУБЕЙШЕЙ ошибки, АРХИТЕКТУРНОЙ ошибки... :)) Интересно кто автор-то, такого архитектурного решения? :)) Автора на сцену!!! ... Ну это ведь жуткая не компетентность, уж простите...

Для всех повторюсь - можно говорить, что  весь код написаный ранее рабоатет не верно... И чудо если никто деньги не потерял через эту ошибку...

Что бы было еще понятнее -  я могу написать такой код, кторый поломает ЛЮБОЙ советник или индиктатор, даже тот код которого я не видел, который основывается на обьектых...  Например автограф, перестанет работать...

И вообще-то вопрос к разработчикам - А вообще можно получить нормальную программу с которой можно было бы работать сейчас? Или всё...  всем досвидания...

0