Delphi FMX将图像从资源加载到listview对象会导致访问冲突

Delphi FMX将图像从资源加载到listview对象会导致访问冲突,delphi,firemonkey,Delphi,Firemonkey,我有一个动态外观的TListview。我添加了一个图像对象,现在我正试图从资源中加载一个图像到这个图像对象上,但我一直遇到访问冲突 我的代码: procedure TfrmMain.btnAddPlayerClick(Sender: TObject); var ListItem: TListViewItem; imgBanned: TListItemImage; InStream: TResourceStream; begin InStream := TResourceStrea

我有一个动态外观的TListview。我添加了一个图像对象,现在我正试图从资源中加载一个图像到这个图像对象上,但我一直遇到访问冲突

我的代码:

procedure TfrmMain.btnAddPlayerClick(Sender: TObject);
var
  ListItem: TListViewItem;
  imgBanned: TListItemImage;
  InStream: TResourceStream;
begin
  InStream := TResourceStream.Create(HInstance, 'banned', RT_RCDATA);
  lvPlayers.BeginUpdate;
  try
    ListItem := lvPlayers.Items.Add;
    imgBanned := ListItem.Objects.FindObjectT<TListItemImage>('imgBanned');
    imgBanned.Bitmap.LoadFromStream(InStream);
  finally
    lvPlayers.EndUpdate;
    InStream.Free;
  end;
end;
procedure TfrmMain.btnAddPlayerClick(发送方:TObject);
变量
ListItem:TListViewItem;
imgBanned:TListItemImage;
流内:TResourceStream;
开始
InStream:=TResourceStream.Create(HInstance,'banked',RT_RCDATA);
lvPlayers.BeginUpdate;
尝试
ListItem:=lvPlayers.Items.Add;
imgBanned:=ListItem.Objects.FindObject('imgBanned');
imgBanned.Bitmap.LoadFromStream(流内);
最后
lvPlayers.EndUpdate;
流内自由;
结束;
结束;
编辑: 调试后,我得到了以下信息,但我不知道这是什么意思。我看到它与GetFieldAddress有关,但我不确定这是什么


您需要创建自己的位图,然后将TImageListItem.bitmap设置为引用它,以便以编程方式加载图像

有关如何正确处理此问题,请查看TListViewItem.Bitmap属性的文档

您错过了开始更新/EndUpdate的try/finally。至于AV。做一些调试。这是你需要掌握的最重要的技能。逐步完成并检查所有变量。其中一个是零。在询问有关错误的问题时,请始终包含错误消息。你可能还不明白AV信息中的十六进制,但我们可以教你它的意思。哦,好的。谢谢我已经用调试信息更新了问题,并且我已经修复了beginupdate和endupdateWell,应该有两个嵌套的try/finally块再次调试。逐步检查代码,并在每行检查值。当您到达故障线路时,是否分配了
imgBanned
?是否已分配
imgBanned.Bitmap
?使用断点、单步执行和检查值。这些都是你需要掌握的关键技术,它们是你的第二天性。好吧,看起来imgBanned被分配了位,但它没有得到位图:所以如果我是正确的,它试图加载一个不存在的图像?