![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Ryn |
|
||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 21.4.2006 Репутация: нет Всего: нет |
у меня есть запись, она используется в классе:
но при обращении к полям fValue_1 или fValue_2:
делфи пишет - "Left side cannot be assigned to". как это устранить ? только я не хочу писать функции присваивания в классе для этих полей. |
||||
|
|||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
а на кой те этот гемор? нельзя эту запись в publiс засунуть?
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Не надо учить плохому! Это и есть реализация инкапсуляции - базового принципа ООП. Ryn, Проидется писать через промежуточную переменную типа TTest Это сообщение отредактировал(а) alexeis1 - 6.9.2006, 15:15 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
а че здесь плохого ? зачем вообще придумали private?
а здесь от него толку никакого, или я не прав? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Пока что нет но в будущем такой класс легко наращивать или безопасно изменять. Просто вместо переменной будет указана функция которая помимо присваивания сделает может еще десяток операций, т.о. интерфес сохранится а функциональность возрастет. Так что модификации подвергнется только код класса, а не код всех проектов использующих этот класс. Это сообщение отредактировал(а) alexeis1 - 6.9.2006, 15:38 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
|
|||
|
||||
Snowy |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Romikgy, есть такая штука - инкапсуляция.
Сейчас ты поднимаешь вопрос о том, зачем она нужна... Об этом расскажет любая книжка по ООП. Теперь к вопросу. Почему. Потому что запись не ссылочный тип и не может полноценно использоваться, как проперти. Какой тут выход. 1. Использовать не запись, а объект.
2. Использовать указатель на запись.
Добавлено @ 15:46 Ну, и как указал Yanis, в текущем состоянии запись можно назначать только целиком. |
||||
|
|||||
Ryn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 21.4.2006 Репутация: нет Всего: нет |
понял, всем спасибо. буду как публис использовать, так проще вроде _)
|
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
знаю , просто знаю , только мало вижу смысл ее здесь применения (имено так как был описан класс!) нет не поднимаю -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Так конечно проще. Не самое грамотное решение, но кода меньше.
Никогда не знаешь, когда понадобится. Сейчас кажется - нафиг не нужно, а потом "блин, надо было". Всё таки грамотный красивый стиль подразумевает инкапсулировать, а не выпячивать на публику. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Еще раз повторюсь ,
я все говорил применительно к выставленому коду! ЗЫ ну объясни мне смысл прятать переменую в приват , если в паблике ты обращаешься к ней на прямую? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Ryn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 21.4.2006 Репутация: нет Всего: нет |
Romikgy,
просто столкнулся с такой проблемой и решил спросить. ведь со стандартными типами и классами работает, а с записью нет. |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
В идеале вообще не должно быть прямого доступа, а только инкапсуляция. Но дельфи позволяет писать на разных уровнях. Да можно и делать прямой доступ. Просто так не принято в ООП. Посмотри исходняки VCL и другиз стандартных классов. Нигде нет прямого обращения - всё сделано через инкапсуляцию. Я не заставляю, всего лишь указываю, что грамотно инкапсулировать. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
дык я об этом и говорю! и про это должна быть не спорю, но имхо она должна быть еще и разумной! -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |