我有这个记录(结构):
type
THexData = record
Address : Cardinal;
DataLen : Cardinal;
Data : string;
end;
我已经宣布了这个清单:
HexDataList: TList<THexData>;
我在列表中填写了一些数据。现在我想扫描ListHexData,有时更新 HexDataList 中的记录元素。
有可能吗?我该怎么办?
答案 0 :(得分:8)
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>
因为它太私有而无法提取指向底层数据的指针。这可能是一个很好的决定。我实际做的是实现我自己的通用列表类,这允许我在需要时自由返回指针。