数组类型的用法

Tulipsys 2002-09-27 02:01:12
如下定义类型:
type
TValidFloor= 1..10;
TElevatorState= set of (esUpRun, esDownRun, esStop);
TTask= record
Floor: TValidFloor;
Direction: TElevatorState;
end;
TTaskList= array[1..10] of TTask;
然后定义类:
type
TBuilder = class
private
FRequestList: TTaskList;
public
procedure CreateTask(Task: TTask);
end;

procedure TBuilder.CreateTask(Task: TTask);
begin
RequestList[2].Floor:= Task.Floor;
end;

编译出错:Left side cannot be assigned to
该怎么办呀?
...全文
65 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zwjchina 2002-09-29
  • 打赏
  • 举报
回复
哦,当然可以!
QQ:21771272(上得不多,呵呵)
EMAIL:zwjchina163@163.com
Tulipsys 2002-09-29
  • 打赏
  • 举报
回复
谢谢蒲石了,不你的心想告诉我,以后就直接问你算了。交个朋友好吗?
zwjchina 2002-09-28
  • 打赏
  • 举报
回复
修改成我上面的代码后,你才可以
如下这样使用
var
R:TTaskList;
begin
R.Floor := Task.Floor;
RequestList[2] := R;
end;
zwjchina 2002-09-28
  • 打赏
  • 举报
回复
啊哦,我没仔细看!
如 King_Dragon(我是谁) 所说
你的属性不能这样定义。
可以做个改动,如下:

type
TBuilder = class
private
FRequestList: TTaskList;
function GetRequestList(const Index: Integer): TTask;
procedure SetRequestList(const Index: Integer; Value: TTask);
public
procedure CreateTask(Task: TTask);
property RequestList[const Index: Integer]: TTask read
GetRequestList write SetRequestList;
end;

procedure TBuilder.CreateTask(Task: TTask);
begin
FRequestList[2].Floor:= Task.Floor;
end;

function GetRequestList(const Index: Integer): TTask;
begin
Result := FRequestList[Index];
end;

procedure SetRequestList(const Index: Integer; Value: TTask);
begin
FRequestList[Index] := Value;
end;
zwjchina 2002-09-28
  • 打赏
  • 举报
回复
你看这句话:
property RequestList: TTaskList write FRequestList read FRequestList;

也就是RequesList指定是读写FRequesList,没说如何读写FRequesList的子项。
所以,你要改子项,必须用我上面说的方法,或者如下也可以。
var
R:TTaskList;
begin
R.Floor := Task.Floor;
RequestList[2] := R;
end;
King_Dragon 2002-09-27
  • 打赏
  • 举报
回复
属性定义为数组类型,本身就存在错误!
Tulipsys 2002-09-27
  • 打赏
  • 举报
回复
对不起,我少写了一个一个属性定义:
property RequestList: TTaskList write FRequestList read FRequestList;
zwjchina 2002-09-27
  • 打赏
  • 举报
回复
注意你自己写的代码:
RequestList[2].Floor:= Task.Floor;
应该改为:
FRequestList[2].Floor:= Task.Floor;
acqy 2002-09-27
  • 打赏
  • 举报
回复
在哪句上出错啊?

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧