Comdiv писал(а):
Судя по истории переписки, сложилось впечатление, что Александру удобней
Код:
Device = RECORD
e1: E1Config;
opt: OptConfig;
eth: EthConfig;
END;
а не воображаемый
Код:
Device = RECORD(E1Config, OptConfig, EthConfig)
END;
для осуществления которого пришлось бы все поля называть по-разному. А о том, что E1Config, OptConfig, EthConfig могут быть расширениями Port с полями Number, Status, Speed он и не думал, ведь это якобы приведёт к лишней вложенности. Поэтому в разных сообщениях он и пишет прямо противоположные вещи - в одном про то, что ему нужен многоэтажный доступ, чтобы все поля не пересекались, а в другом - о лучшей читаемости и приемлемой вложенности, основываясь на перемешанных понятиях расширения и вложения, между которыми он выбирает обобщённо на основе "удобства", а не для каждого случая по разному предназначению.
Вы совершенно правильно меня поняли, именно так я и сделал в программе. По поводу дальнейшего агрегирования на уровне общих параметров порта - да, можно было сделать и короткую запись с тремя полями. Но смысл был не в том, чтобы делать агрегирование ради агрегирования, а чтобы в записях E1Config, EthConfig, OptConfig все поля были одного уровня, поскольку это одноранговые настройки.
Теперь еще раз про наследование - я не против классического наследования. Просто для меня оно удобнее, когда в базовой и расширенной записи нет и не будет пересекающихся полей.
Хочу выразить благодарность всем откликнувшимся на мой пост.