【发布时间】:2014-01-31 15:18:31
【问题描述】:
我有一个通用的记录列表。这些记录包含一个动态数组,如下所示
Type
TMyRec=record
MyArr:Array of Integer;
Name: string;
Completed: Boolean;
end;
var
MyList:TList<TMyRec>;
MyRec:TMyRec;
然后我创建列表并设置数组长度,如下所示
MyList:=TList<TMyRec>.Create;
SetLength(MyRec.MyArr,5);
MyRec.MyArr[0]:=8; // just for demonstration
MyRec.Name:='Record 1';
MyRec.Completed:=true;
MyList.Add(MyRec);
然后我更改MyArr 中的数据,我也更改MyRec.Name 并将另一个项目添加到列表中
MyRec.MyArr[0]:=5; // just for demonstration
MyRec.Name:='Record 2';
MyRec.Completed:=false;
MyList.Add(MyRec);
当MyRec.MyArr 在将第一项添加到列表后发生变化时,存储到列表中的MyArr 也会发生变化。但是其他记录字段没有。
我的问题是如何防止MyRec.MyArr 中的更改反映在已存储在列表项中的数组上。
我需要声明多条记录吗?
【问题讨论】:
标签: arrays delphi generics record tlist