![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Доступ к закрытым членам [D5]
kaif © (2002-02-02 16:07:00)Был какой-то хакерский способ (типа породить псевдо-потомка объявленного класса) добраться до секции implementation другого модуля. Я все перерыл, но не могу найти, в какой-то книжке читал и даже пробовал, но забыл, как это делалось... И не помню, до чего можно было так добраться. Например, до внутренней переменной? А может, это deja view?
kaif (2002-02-02 17:16:00) [1]Спасибо Loxly ©.
Я нашел статью в Мастерах ("Как вызвать private метод класса, находящегося в другом модуле", Андрей Руфин).
Теперь я могу принять решение - лучше этого не делать.
Спасибо DMN
Пожалуй лучше ограничится этим методом (доступ только к защищенным членам). Тут, по крайней мере нет явного криминала, который не был бы заметен компилятору.
Serg001 (2002-02-02 17:07:00) [2]>Loxly
Мне бы не помешала такая статейка.
Loxly (2002-02-02 17:04:00) [3]Около года назад на сайте Мастеров лежала статья о том как добраться до private-методов класса. Если нужно, могу поискать ее у себя - где-то она должна у меня валяться.
DMN (2002-02-02 16:57:00) [4]Так можно было добраться до protected свойств и методов класса. Например, у TControl есть защищенное свойство Color. Чтобы менять цвет у любого контрола, не задумываясь, TEdit это, TLabel или еще кто, описываем в своем юните:
type
THackedControl=class(TControl)
end;
Затем просто приводим того потомка TControl, цвет которого мы хотим поменять, к нашему типу:
THackedControl(Label1).Color := clRed;
THackedControl(Edit1).Color := clBlue;