vitaly_l писал(а):А как можно использовать переменные(поля) класса, если их заполнить до create - то..., то что в них записано, сохраняется после inherited Create;?
Для чего могут понадобиться(предназначены) class var поля?
Я Вам уже писал "класс переменные (поля) - это по сути обычные глобальные переменные, но при обращении к которым нужно указать название класса + точку + название поля. А для глобальной переменной мы при обращении указываем просто имя переменной."
Это обычные глобальные переменные, т.е. тоже самое, что Вы пишите в Var i:integer; Назначение и все правила работы с "class var" аналогичны просто "var".
Класс функции и класс поля придуманы только для того, чтобы попытаться как-то сгруппировать некоторые глобальные переменные, и функции с неким общим названием.
Вот Вы в программе объявили Var i,j.k:integer; И объявили функции proc1, proc2, proc3. Что и для чего без комментариев будет непонятно.
Если Вы объявите
- Код: Выделить всё
Type
XXX=class
class var i:integer;
class procedure proc1();
end;
То тем самым показываете некую смысловую взаимосвязь переменной i и функции Proc1. Вам для обращения нужно будет писать "XXX.i" и "XXX.Proc1".
То есть на функционал это не влияет, но это позволяет повысить читабельность. Совмещение в одном классе обычных полей и класс полей, обычных функций и класс функций не рекомендуется без особой необходимости, чтобы не путать и не вводить в заблуждение.
Мы недавно обсуждали про модули, секции инициализации, финализации. Те кто много пишет глобальных переменных, много пишет функций вне классов и знают для чего это нужно, и при этом избегают создание классов без нужды, те как раз широко используют класс функции и класс переменные, чтобы не создавай классов, не ввязываясь в ООП, несколько структурировать свою программу.