Как правильно удалять объекты на графике - страница 3

 
Svinozavr писал(а) >>

Бред. В вашем коде нет ни строчки про создание объекта. Если это не 0-е окно, а окна индикаторов, то КАК!!! вы выясняете в каком подокне создавать объект??????????????????????????

Без разницы в каком окне. Индикатор создает уникальный префикс для имен своих объеков и по префиксу удаляет только свои.

С Новым Годом всех!

 
Svinozavr >>:

Бред. В вашем коде нет ни строчки про создание объекта. Если это не 0-е окно, а окна индикаторов, то КАК!!! вы выясняете в каком подокне создавать объект??????????????????????????

Это зависит от задачи. Объекты могут создаваться и в основном окне, тогда просто 0, это может быть FindWindow() и WindowOnDropped(). Но это вопросы создания объектов. А мой код удаления учитывает все варианты их создания. Чувствуешь разницу?

 
gip >>:

Это зависит от задачи. Объекты могут создаваться и в основном окне, тогда просто 0, это может быть FindWindow() и WindowOnDropped(). Но это вопросы создания объектов. А у меня код удаления, учитывающий все варианты их создания. Чувствуешь разницу?

Чувствую... Ну и на куя тогда все, кроме Clear()???

Согласен, если говорить ТОЛЬКО о сабже, то моя библиотека избыточна. Но и ваша - также. Иначе вы бы ограничились только ф-й Clear().

Фикша в том, что без алгоритма создания, учета и управления объектами обойтись нельзя. И ваш код и мой содержит эти элементы. У вас он просто "не на все случаи". Причем те, где это будет корректно - буквально на зачищенном поле, "на пустом месте". Чуть в сторону - и все раскосячит.

Повторюсь. Если говорить только о сабже, то и ObjectsDeleteAll() подойдет. Но мы ж не об этом!

===

ок. Вот вам задача. Нужно сделать индикатор из стандартного стохастика, который бы, кроме вывода его значений, также отмечал граф.боъектом - верт. линией соотв. цвета - кроссы с 20/80 в его подокне.

Таких индикаторов м.б. выведено больше 1. Изменение параметров одного, не должно изменять граф.объекты другого. Равно как и удаление одного из индикаторов.

Решайте. А потом говорите про избыточность моего кода.

Успехов.

 

Уводишь разговор в сторону. Ты не указал ошибку в моем коде, не привел пример ситуации, когда он будет работать неправильно или неожидаемо.

Заклинания типа "не на все случаи", "буквально на зачищенном поле", "на пустом месте", "и все раскосячит" к теме не относятся. Хочется конкретики.

Твою задачу я решать не вижу смысла, ты и сам её решишь.

Вопрос остается в силе, код считаю верным. Твой код чудовищно избыточен.

 

Все. Закончили. Я вам дал конкретную ситуацию, когда ваш код недостаточен. Вы - не слышите. Что я могу? Я не ухогорлонос.

Закончили. Удачи.

 

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

PS. Если быть точным, перед MathRand() ещё нужна инициализация MathSrand(TimeLocal());, хотя у меня и так работает. 

 
gip >>:
Предлагаемый мной код достаточен и будет корректно работать в указанном тобой примере. Ты просто не можешь этого понять.

Не, не могу. Я выложил свой пример. Ваш? Ну сделайте индикатор, чтоб я, другие, могли его поюзать. Пооткрывать по несколько штук, поизменять, поудалять в произвольном порядке.

Задаю конкретный вопрос: КАК вы будете выяснять номер подокна? - в ответ: "Ты просто не можешь этого понять." Покажите на примере. В ответ: "А что вы думаете произойдет?"

Я в таком ключе разговор продолжать не намерен. Кидайте понты перед девочками. Удачного секса.

 
Есть способ короче, просто отбрось свою <> и спроси, что тебе непонятно в моем коде? Интегер тебе правильно заметил, индикатор должен создавать только "свои" объекты и только эти объекты удалять. В моем коде при каждой инициализации, а это и присоединение индикатора и изменение его параметров, генерируется идентификатор сессии, он используется для поиска "своих" объектов при удалении. Удаление происходит и при отсоединении индикатора и перед сменой параметров. Всё должно быть очевидно.
 
gip >>:

Есть способ короче, просто отбрось свою <> и спроси, что тебе непонятно в моем коде?

Мне там понятно все. Там нет ГДЕ создавать объекты. Ведь чтобы удалить, их нужно сначала создать, не так ли?

Интегер тебе правильно заметил, индикатор должен создавать только "свои" объекты и только эти объекты удалять. В моем коде при каждой инициализации, а это и присоединение индикатора и изменение его параметров, генерируется идентификатор сессии, он используется для поиска "своих" объектов при удалении. Удаление происходит и при отсоединении индикатора и перед сменой параметров. Всё должно быть очевидно.

Да??? )))

ок. По порядку. Пойдем от целеполагания.

1. Чтобы удалить объекты, их нужно сначала создать.

2. Чтобы их создать, нужно знать ГДЕ их создавать. В вашем коде об этом ни буквы. Поэтому я говорю, что он НЕДОСТАТОЧЕН.

У меня есть ф-я, выясняющая это. Это вы называете "дикой избыточностью"??? Ну и чего вы от меня после этого хотите?

Где ВАШ вариант? Не надо меня уговаривать, что все будет ок - я не девочка. К коду ваши уговоры не пришьешь.

Еще раз (скоро загибать уже будет нечего):

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

Разумеется, одним этим кодом не обойдешься. По-любому, нужно будет аналог моей ф-ии. Так что говорить об избыточности...

===

ок. Мне надоело оправдываться. Укажите точно, какая, по-вашему, из ф-й избыточна и дико избыточна. И объясните почему. Хотите начну?

Получить идентификатор индикатора. GetID(). У вас это решено через рандом. Нормально. У меня через GV.

Получить имя объекта. Name(). У вас каждый раз что--то писать надо. У кого избыточней?

Получить номер подокна. GetWinNumber(). У вас об этом ни гу-гу. Как будто и не надо создавать чего-то. Только удалять.

DelObjects(). У вас Clear(). Нормально.


Что вам тут избыточного??? Ну что? Потом, это включаемый файл, писать от себя ничего особо не надо в отличии от вашего варианта. У кого избыточней?

 

Svinozavr писал(а) >>

У меня через GV.

а что будет, если пользователь удалит глобальную переменную ?

идентификатор индикатора нужен самому индикатору, так зачем его выносить в глобальную переменную,

все-равно пользователь вешает индикаторы ?

к тому же функция GetID() соврет для очередной копии индикатора, использующего ваш подход после того, когда пользователь повесит какой-нибудь левый индикатор (например, из стандартного набора), затем использующий ваш подход ..

Причина обращения: