Каким-то образом случайное смешивание TEdit.Text и TLabel.Caption работает без исключений?

Я работаю с динамическим созданием нескольких различных типов элементов управления и хранением их в списке в фоновом режиме. Двумя из таких элементов управления являются 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 просто случайно используют один и тот же адрес памяти между классами управления.

Почему бы это не привело к нарушению доступа?

5
задан Jerry Dodge 18 December 2011 в 23:18
поделиться