attor 2019-03-14 16:34 采纳率: 0%
浏览 325

BCB重复使用Frame问题

for(int i=0;i<4;i++)
{
                m_pVideoShow[i] =new TVideoFrame(this);
                m_pVideoShow[i]->Parent=this;
                m_pVideoShow[i]->Top=96;
              m_pVideoShow[i]->Left=24+300*(i);
                m_pVideoShow[i]->Height=300;
                m_pVideoShow[i]->Width=300;
                m_pVideoShow[i]->Tag = i;
}

图片说明

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-08 08:11
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这段代码在创建TVideoFrame对象时会引发异常,因为TVideoFrame类已经存在于内存中。解决这个问题的方法是删除所有TVideoFrame的引用或重新分配内存。

    以下是一个修改后的版本:

    // 假设VideoFrame类已经存在,并且我们希望重用它
    TVideoFrame* pVideoFrame = new TVideoFrame(this);
    
    for (int i = 0; i < 4; ++i) {
        // 为每个帧分配内存并将其添加到队列中
        pVideoFrame->Parent = this;
        pVideoFrame->Top = 96 + 300 * (i);
        pVideoFrame->Left = 24 + 300 * (i);
        pVideoFrame->Height = 300;
        pVideoFrame->Width = 300;
        pVideoFrame->Tag = i;
    
        // 将pVideoFrame加入到队列中
        m_pVideoShow.push_back(pVideoFrame);
    }
    

    在这个例子中,我们首先新建了一个TVideoFrame对象,然后将它加入到队列中。这样,当我们在循环中再次调用push_back()方法时,新的TVideoFrame对象就会被添加到队列中,而不会触发EComponentError异常。

    评论

报告相同问题?