Я работаю с динамическим созданием нескольких различных типов элементов управления и хранением их в списке в фоновом режиме. Двумя из таких элементов управления являются TEdit и TLabel. Все эти элементы управления являются подконтролями элемента управления TPanel.
Ну я случайно перепутал TEdit с TLabel при чтении из TPanel.Controls (получил их не по тем индексам) при записи в свойства TEdit.Text и TLabel.Caption. Почему-то это даже не вызвало никакого исключения.
Он делает что-то вроде TLabel(SomeEditControl).Caption:= 'Это элемент управления меткой';
и TEdit(SomeLabelControl).Text:= 'Это элемент управления редактированием';
И он помещает данные TEdit.Text в свойство TLabel.Caption, а данные TLabel.Caption в свойство TEdit.Text. Я озадачен тем, что это не вызвало исключения... Единственное, что я могу предположить, это то, что свойства TEdit.Text и TLabel.Caption просто случайно используют один и тот же адрес памяти между классами управления.
Почему бы это не привело к нарушению доступа?