我有一个TListView
用于可视化和存储一些数据的程序。TListitem
的数据属性填充了指向记录的指针,如下所示:
type
TWatch = record
name : string;
path : string;
//...
end;
procedure TfrmProcessWatcherMain.AddWatchToListView(AWatch: TWatch);
var
ANewWatch : TListItem;
begin
ANewWatch := lvWatches.Items.Add; //lvWatches is TListview
//...
ANewWatch.Data:= @AWatch;
end;
当我试图以某种方式检索这些数据时,我遇到了访问冲突错误,这对我来说完全是一个惊喜,因为一切看起来都是合法的,这里是检索代码:
if(lvWatches.Selected <> nil) then begin
tempWatch := TWatch(lvWatches.Selected.Data^); // AV here
ShowMessage(tempWatch.name);
AWatch
传递给第一个函数的也存储在
WatchList : TList<TWatch>;
因此可以使用其他方法访问