-
Как обнулить в цикле?
for I := Panel1.ChildrenCount - 1 downto 0 do if Panel1.Children[I].ClassNameIs('TLabel') then (Panel1.Children[I] as TLabel) := nil;
Ошибка - Left side cannot be assigned to
Спасибо
-
А для чего такое делать?
-
>>> (Panel1.Children[I] as TLabel) := nil; > А для чего такое делать?
Panel1.RemoveObject(Panel1.Children[I]);
-
а автор и NoUser © это один человек? придумать вариант приенения не состовляет труда )
-
> сабж Действительно, странное желание. Сделать это несложно, но лучше Вы бы объяснили задачу - может, найдем нормальный способ ее решения? А то очень напоминает вот это: http://www.gunsmoker.ru/2008/10/x-y-z.html
-
xyz: (Panel1.Children[I] as TLabel).Visible := False; > Юрий Зотов © (12.03.17 16:05) [4] > > сабж > > Действительно, странное желание.
В чём странность, - присвоить переменной nil ? ( Вопрос по синтаксису Delphi) плюс опасение ТС, что это может нарушить индексацию списка ( Как обнулить в цикле?) значит, как вариант, ему нужно 'убрать' лейбу. ЗЫ Кстати, а как в Java зачистить элементы списка?
-
> В чём странность, - присвоить переменной nil ?
Странность не в присвоении nil, а в том, что это зачем-то потребовалось. Потому что это не просто переменная, а элемент служебного списка. Он управляется автоматически и вмешиваться в это управление опасно, да и просто незачем.
Допустим, мы сделали то, что хочет автор - очистили все ссылки на TLabel, лежащие на панели. Заметьте, что сам список при этом не изменился, а только обнулились некоторые его элементы.
Теперь по каким-то причинам срабатывает код VCL: панель проходит по тому же самому списку и что-то делает с каждым его элементом.
Что будет?
-
> Кстати, а как в Java зачистить элементы списка?
Clear
-
> > Кстати, а как в Java зачистить элементы списка?>
Или iterator.remove
-
> [6] Юрий Зотов © (12.03.17 17:55) > Что будет?
Ещё, если их нигде у "себя" не сохранить, то и утечка памяти будет.
-
> Inovet © (12.03.17 21:17) [9]
Nil.DoSomesing = Access Violation
-
> [10] Юрий Зотов © (12.03.17 23:51)
Это сомо собой, а ещё и утечка.
-
А зачем здесь (Panel1.Children[I] as TLabel) := nil - as TLabel , если уж решили присвоить nil элементу зачем его приводить к типу?
-
> stas © (14.03.17 11:06) [12]
Чего не понятно? В примерах по Children так написано.
Вот я не понимаю, какое отношение это всё имеет к "синтаксису Delphi"?
-
> Вот я не понимаю, какое отношение это всё имеет к "синтаксису > Delphi"?
А никакого. Но конференция-то "Начинающим".
|