Показать сообщение отдельно
  #1  
Старый 29.11.2012, 09:32
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию delphi left side cannot be assigned to при обработке record

Я тут наткнулся на проблему и нашел как ее решить. Есть следующий код:
Код:
type
TRec = record
a:string;
b:integer;
end;
TClass = class
private
FRec:TRec;
public
property Rec:TRec read FRec write FRec; {конструкция read GetRec write SetRec тоже не решает проблему}
end;

***

Procedure proc;
C:TCalss;
begin
C := TClass.Create;
{На две следующие строчки компилятор ругается вот таким текстом left side cannot be assigned to}
C.Rec.a := 'string'; 
C.Rec.b := 5;
end;

Решается 2-мя путями.
1:
Код:
Procedure proc;
C:TCalss;
R:TRec;
begin
C := TClass.Create;
R.a := 'string';
R.b := 5;
C.Rec := R; 
end;
2:
Код:
Procedure proc;
C:TCalss;
begin
C := TClass.Create;
with C.Rec do
begin
a := 'string'; 
b := 5;
end;
{Видимо, конструкция with сама по себе работает так же, как 1-й вариант, то есть работает с record целиком (принимает и отправляет)}
end;

Может, это вообще обходится другими способами, более правильными, но мне они неведомы.
Ответить с цитированием