| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Динамически создаваемые Лэйблы |
| Автор: Fedor 24.12.2003, 22:54 | ||||
| Динамически создаю Label'ы: if условие, то... Labels[i,j]:=TLabel.Create Это все понятно. А далее нужно освободить все из них, тоесть label[i,j].free проблема: если из-зи условия конкретный Label не создался, то при освобождении выается ошибка. пробывал делать:
выдается ошибка Также пробовал:
Тоже выдается ошибка помогите это сделать... |
| Автор: Illusion Dolphin 24.12.2003, 23:19 |
| А попробуй по умолчанию задавать всем элементам массива значение nul, а потом проверять на него, и если он не nul, тогда делать freeandnil(labels[i,j]) |
| Автор: zemfir 25.12.2003, 00:00 |
| Вы пытаетесь освободить то, чего нет |
| Автор: Fedor 25.12.2003, 00:45 |
| Попробую все, что предложили... zemfir а Вы не могли бы рассказать как именно заключать в скобки исключения. А то че-то у меня пока с ентим проблемы... Даже в хелпе нормально не могу найти... |
| Автор: zemfir 25.12.2003, 00:58 |
| for i:=1 to n do for j:=1 to n do begin try Labels[i,j].free; except end; end; но вообще, это порочный путь. Правльно изначально задать значения Labels[i,j]=nil а при уничтожении if Assigned(Labels[i,j]) then Labels[i,j].Free, В принципе, перехват исключения стоять должен, но только как "на всякий случай", а может и не должен, не должно быть в этому случае "всяких случаев". |
| Автор: Fedor 25.12.2003, 18:43 |
| zemfir Дольшое спасибо! Буду пробовать. |
| Автор: Петрович 25.12.2003, 23:13 | ||||||||
Illusion Dolphin
и zemfir
Проверка вовсе не обязательна, если массив был проинициирован Nil. Дело в том, что Free для того сделан что-бы на Nil не ругаться. Иначе можно было просто дергать Destroy. Вот выдержка из справки:
Ну а для полной гарантии вот фрагмент из System.pas:
|