我有这个记录(结构):

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>,因为该类太私有了,无法提取指向基础数据的指针。这可能是个好决定。我实际上所做的是实现自己的通用列表类,并允许我在需要时自由返回指向记录的指针。

10-08 12:33