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中的记录元素.
可能吗?我能怎么做?
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>因为它太私有了,无法提取指向底层数据的指针.这可能是一个很好的决定.我实际上做的是实现我自己的通用列表类,这允许我在需要时自由返回指向记录的指针.