Ik heb het volgende gegeven:
Deze melding geeft mij door de compiler : [dcc32 Error] Unit1.pas(42): E2064 Left side cannot be assigned toDelphi Code:
type TMyRecordTest = record name : string; value : integer; end; TMyTest = class fMyRecordtest : TMyRecordTest; public property MyRecordtest : TMyRecordTest read fMyRecordtest write fMyRecordtest; end; TForm1 = class(TForm) procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormShow(Sender: TObject); var test : TMyTest; begin test := TMyTest.Create; test.MyRecordtest.name := 'john'; test.MyRecordtest.value := 50; test.Free; end;
Als ik de record object rechtstreeks wil benaderen met fMyRecordtest, dan mag het weer wel.
Heeft dat te maken met de property MyRecordtest, die ik gemaakt heb om het record object te kunnen benaderen. Het lijkt er op dat hij iets wilt wegschrijven naar TMyRecordtest en dat is een record object en geen variabele. Maar de property zorgt er toch voor dat de variabele fMyRecordtest wordt gelezen en dat met de verdere notatie na de punt de juiste variabele wordt gesprongen?
Deze zelfde test werkt prima als TMyRecordtest wordt omgezet naar een class object.
Bookmarks