Модератор: Модераторы
Лекс Айрин писал(а):MylnikovDm, ты не прав. Этот проперти позволит в будущем заменить переменную на вызов метода, да и служит дополнительным контролем от непланомерного изменения переменной. То есть, это реализация инкапсуляции.
Ichthyander писал(а):MylnikovDm заранее не всегда известно понадобятся ли геттеры и сеттеры для нового свойства, так что я создаю свойство. По необходимости добавляю процедуры для установки и чтения свойства. Если свойство понадобится в наследниках или снаружи.
Ichthyander писал(а):В противном случае, если нового поле нужно только для внутренних нужд класса, то property не делаю, просто поле класса
Ichthyander писал(а):Еще если property published, то удобно использовать для rtti функций.
For methods, fields and properties in the Published section, the compiler generates RTTI information (Run Time Type Information), which can be used to query the defined methods, fields and properties in the published section(s).
Only class-typed fields can be published. For properties, any simple property whose size is less than or equal to a pointer, can be declared published: floats, integers, sets (with less than 32 distinct elements), enumerateds, classes or dynamic arrays (not array properties).
Although run-time type information is available for other types, these types cannot be used for a property or field definition in a published section. The information is present to describe f.e. arguments of procedures or functions.
MylnikovDm писал(а):Если поле нужно только для внутренних нужд класса, то оно не размещается в секции public.
MylnikovDm писал(а):А с чего вы взяли, что в published нельзя объявить просто поля?
читаем документацию https://www.freepascal.org/docs-html/ref/refsu37.html
MylnikovDm писал(а):Если вы не знаете как применить возможности RTTI в своих программах, то это ещё не значит, что это нужно только для дизайнера.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13