Sto lavorando con la creazione dinamica di diversi tipi di controlli e la memorizzazione in un elenco in background. Due di questi controlli sono un TEdit e un TLabel. Questi controlli sono tutti sottocontrolli di un controllo TPanel.In qualche modo mescolando accidentalmente TEdit.Text e TLabel.Caption funziona senza eccezioni?
Bene Ho mescolato accidentalmente TEdit con TLabel durante la lettura da TPanel.Controls (ottenuto dagli indici errati) durante la scrittura nelle proprietà TEdit.Text e TLabel.Caption. In qualche modo, non ha nemmeno sollevato alcuna eccezione.
Fa qualcosa come TLabel(SomeEditControl).Caption:= 'This is a label control';
e TEdit(SomeLabelControl).Text:= 'This is an edit control';
E inserisce i dati TEdit.Text nella proprietà TLabel.Caption e i dati TLabel.Caption nella proprietà TEdit.Text. Sono confuso dal fatto che ciò non abbia sollevato un'eccezione ... L'unica cosa che posso immaginare è che le proprietà TEdit.Text e TLabel.Caption si limitino a utilizzare lo stesso indirizzo di memoria tra le classi di controllo.
Perché non fornire una violazione di accesso?
Tutti discendono da 'TControl' che ha una proprietà' WindowText'. ( Solo supposizioni ...) –
@AndreasRejbrand Questa è una buona possibilità, TEdit.Text e TLabel.Caption Suppongo di tradurre il valore di WindowText –
True. Vedi sotto. –