我有这个记录(结构):
type
THexData = record
Address : Cardinal;
DataLen : Cardinal;
Data : string;
end;
我已经声明了这个清单:
HexDataList: TList<THexData>;
我已经用一些数据填充了列表。现在,我想扫描ListHexData并有时在HexDataList中更新记录的元素。
可能吗?我能怎么做?
最佳答案
var
Item: THexData;
...
for i := 0 to HexDataList.Count-1 do begin
Item := HexDataList[i];
//update Item
HexDataList[i] := Item;
end;
绑定是您想就地修改
HexDataList[i]
,但不能修改。当我使用保存记录的TList<T>
时,我实际上是TList<T>
的子类,并将Items
属性替换为返回指向该项目的指针而不是该项目的副本的属性。这允许就地修改。编辑
再次查看我的代码,我意识到我实际上并没有子类
TList<T>
,因为该类太私有了,无法提取指向基础数据的指针。这可能是个好决定。我实际上所做的是实现自己的通用列表类,并允许我在需要时自由返回指向记录的指针。