Property do pola obiektu typu rekordowego

0
type 
   TDane = record
     a: integer;
     b: integer;
     c: integer; 
   end;
 
property dane: TDane read FDane write FDane;

taka sytuacja.

w starszych wersjach mogłem uczynić

dane.a := 666;

w nowych takie przypisanie wywala errora 'Left side cannot be assigned'.

Czy istnieje mozliwość przestawienia ustawień Delphi ( XE2 ), żeby zmienić mu politykę property na tą ze starszych wersji ?

0

Z tego co wiem nie ma takiej opcji, musisz wykonać trzy przypisania.

1

Owszem ten zapis:

dane.a := 666;

w starszych wersjach był możliwy lecz nic nie robił, ponieważ właściwość dane zwracała (i w nowych wersjach nadal zwraca kopię składowej FDane) zaś zmiana kopii nie powoduje zmiany oryginału.
W nowszych wersjach dostajesz błąd bo to jest błąd.
Zamień strukturę na klasę i zadziała poprawnie i automagicznie.

0

problem w tym, że to nie mój kod. Tylko zaciągnięta z neta biblioteka w której jest masa tak używanych property.

1

Po linii najmniejszego oporu, zrób FDane publiczne i niech wszystko odnosi się do FDane, skoro tak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1