如何更新TList <T>中的数据?

Dan*_*llo 1 delphi generics collections

我有这个记录(结构):

type
    THexData = record            
            Address : Cardinal;
            DataLen : Cardinal;
            Data    : string;    
    end;
Run Code Online (Sandbox Code Playgroud)

我已经宣布了这个清单:

HexDataList: TList<THexData>;
Run Code Online (Sandbox Code Playgroud)

我在列表中填写了一些数据.现在我想扫描ListHexData,有时更新HexDataList中的记录元素.

可能吗?我能怎么做?

Dav*_*nan 8

var
  Item: THexData;
... 
for i := 0 to HexDataList.Count-1 do begin
  Item := HexDataList[i];
  //update Item
  HexDataList[i] := Item;
end;
Run Code Online (Sandbox Code Playgroud)

绑定是你想要HexDataList[i]在适当的位置修改,但你不能.当我使用一个TList<T>保存记录的时候,我实际上是子类,TList<T>Items用一个返回指向该项的指针的属性替换该属性,而不是该项的副本.这允许进行原位修改.

编辑

再看一下我的代码,我意识到我实际上并不是子类,TList<T>因为它太私有了,无法提取指向底层数据的指针.这可能是一个很好的决定.我实际上做的是实现我自己的通用列表类,这允许我在需要时自由返回指向记录的指针.