Delphi XE E2064 Left side cannot be assigned to 错误解决方法
1. 起源
此问题源于[秋风人事档案管理系统]用Delphi XE重编译中所发现。
快十年了,当初Delphi 7所编写项目,想用Delphi XE重新编译,并打算做为Free软件发布,编译错误中发现此问题,感觉颇有些意思,遂记录下来,以做备忘。
自Delphi 2009之后我转做c#之WinForm界面开发,Delphi 2010之后未实际做过项目,因此至此才遇到此问题。
此时Delphi XE更新已至XE10版。因情结而不愿XE2之后的use方法,遂决定以Delphi XE做为工具,重整老项目。
而此问题简而言之,就是当记录体(record)做为属性出现时,其赋值可否问题。
2. 赋值
比如,我有一记录体属性如下(这里以TPoint说明问题,实际项目中为自定义记录体):
type
TForm1 = class(TForm)
btnTest: TButton;
procedure btnTestClick(Sender: TObject);
private
{ Private declarations }
FPoint: TPoint;
public
{ Public declarations }
property Point: TPoint read FPoint write FPoint;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnTestClick(Sender: TObject);
begin
//Point.X := 12; //如此赋值不成功,报错为Left side cannot be assigned to
//Point.Y := 12;
with

本文介绍了在使用DelphiXE编译旧项目时遇到的E2064错误,该错误涉及到记录类型属性的赋值。作者探讨了从Delphi2009到XE版本中编译器的变更,导致的面向对象封装限制。文章列举了四种解决方法,包括改用字段、转换为类、指针赋值和使用临时变量。对于开发者来说,这是一篇关于Delphi语言特性和版本差异的实用教程。
最低0.47元/天 解锁文章
6044

被折叠的 条评论
为什么被折叠?



