Форум: "Начинающим";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];
Внизprivate свойства Найти похожие ветки
← →
NiGGa © (2007-10-22 22:12) [0]Доброго времени суток.
Каким образом можно доступиться к private свойствам другого объекта? И насколько это нормально, сточки зрения объектной концепции?
Всем спасибо.
← →
oxffff © (2007-10-22 22:18) [1]
> NiGGa © (22.10.07 22:12)
> Доброго времени суток.
>
> Каким образом можно доступиться к private свойствам другого
> объекта? И насколько это нормально, сточки зрения объектной
> концепции?
>
> Всем спасибо.
ASM?
← →
oxffff © (2007-10-22 22:33) [2]
> И насколько это нормально, сточки зрения объектной концепции?
Все нормально.
Ты же не по собственной воле это делаешь.
А вынужденно.
Держа эту мысль в голове, обращайся к private полям смело, если хорошо знаешь предмет.
← →
Сусл © (2007-10-22 23:37) [3]можно как-то. когда-то делал по статье в сети.
> И насколько это нормально, сточки зрения объектной концепции?
скорее всего это не есть хорошо.
возможно, что по причине несовместимости с будущими версиями библиотек или самого дельфи.
если же класс твой, то в чем проблемы? не делай его private
← →
Ins © (2007-10-22 23:58) [4]
> Каким образом можно доступиться к private свойствам другого
> объекта?
Если знаете смещение поля от начала, просто прочтите n байт по этому смещению от адреса, который содержит ссылка на экземпляр. Хотя возможно сейчас г-н oxffff © вам расскажет про какой-нибудь более изощренный способ.
> И насколько это нормально, сточки зрения объектной концепции?
Да это просто кошмар! Концепции ООП это протеворечит полностью, да и в другой версии класса возможно работать не будет, если смещение изменится.
Никогда не было такой потребности. Что я делаю неправильно?
← →
Юрий Зотов © (2007-10-23 00:05) [5]Ни разу не встречал private свойств.
:o)
← →
Сусл © (2007-10-23 00:15) [6]
> Ни разу не встречал private свойств.
ну так в жабе и нет свойств вообще :)
если серьезно, то согласен - извращением попахивает.
хотя, Юра, могу тебе заметить, что с развитием языка в последних версиях дельфи private это уже не просто private, а скорее friend, ибо виден снутри модуля, а также outer-классу (ну в дельфи теперь тоже есть вложенные классы). в этом случае может быть inner class с private свойством и strict private геттером и сеттером.
так, что у private свойства есть применение.
← →
DevilDevil (2007-10-23 00:54) [7]вообще говоря, можно по смещению.
Предполагаю...
У данного класса есть потомок, свойство которого открыто?
Я сам достаточно часто использую, только реального примера не могу припомнить...
Ну например, недавно было (см [1]): http://delphimaster.net/view/2-1192865067/
Т.е. у Bevel-а не открыто свойство TControl.Canvas, а у TPanel - открыто. Следовательно, описаным в ссылке, нехитрым способом можно получить доступ :)
← →
DevilDevil (2007-10-23 00:54) [8]вообще говоря, можно по смещению.
Предполагаю...
У данного класса есть потомок, свойство которого открыто?
Я сам достаточно часто использую, только реального примера не могу припомнить...
Ну например, недавно было (см [1]): http://delphimaster.net/view/2-1192865067/
Т.е. у Bevel-а не открыто свойство TControl.Canvas, а у TPanel - открыто. Следовательно, описаным в ссылке, нехитрым способом можно получить доступ :)
← →
Leonid Troyanovsky © (2007-10-23 09:15) [9]
> DevilDevil (23.10.07 00:54) [8]
> Т.е. у Bevel-а не открыто свойство TControl.Canvas
IMHO, как и в вопросе, некая путаница.
Приватное поле vs protected property.
--
Regards, LVT.
← →
Игорь Шевченко © (2007-10-23 09:37) [10]В древнем Китае желающим странного отрубали голову.Мудро.
← →
NiGGa © (2007-10-23 10:48) [11]
> oxffff © (22.10.07 22:33) [2]
> Все нормально.
> Ты же не по собственной воле это делаешь.
> А вынужденно.
Это единственное, что меня оправдывает в такой ситуации)
> Сусл © (22.10.07 23:37) [3]
> если же класс твой, то в чем проблемы?
В том то и проблема, что класс не мой.
> Ins © (22.10.07 23:58) [4]
> Никогда не было такой потребности. Что я делаю неправильно?
Видимо не используете чужие не совсем качественно написанные компоненты) Мне вот пришлось, опять же не по своей воле, и что тут делать?
> Сусл © (23.10.07 00:15) [6]
> если серьезно, то согласен - извращением попахивает.
Абсолютно с вами согласен
> DevilDevil (23.10.07 00:54) [7]
> У данного класса есть потомок, свойство которого открыто?
Свойство которого должно быть открыто в обозримом будущем)
> Leonid Troyanovsky © (23.10.07 09:15) [9]
> IMHO, как и в вопросе, некая путаница.
> Приватное поле vs protected property.
Да прошу прощения, именно приватное поле. Это я уже под вечер после Мегаполиса забыл как это дело называется. У них это атрибут, к определению привык, но вот точно казалось что не к Делфе)
all
Т.е. как я понял единственный метод это искать адрес этого самого поля, но это крайне неприветствуется и могут руки поломать?
← →
Сусл © (2007-10-23 10:58) [12]
> Т.е. как я понял единственный метод это искать адрес этого
> самого поля
да
про руки не знаю.:)
← →
Kolan © (2007-10-23 11:02) [13]> могу тебе заметить, что с развитием языка в последних версиях
> дельфи private это уже не просто private, а скорее friend
Можно подумать раньше было не так. В новых версия просто появился нормальный, человеческийprivate
, и назвали егоstrict private
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.049 c