gpt4 book ai didi

C++ Builder 删除动态数组的对象

转载 作者:行者123 更新时间:2023-11-30 01:45:24 25 4
gpt4 key购买 nike

我想删除我在 for 循环中创建的旧图像。

第一次单击按钮时会创建图像。第二次或第三次,无论如何,现在应该删除创建的旧图像(在循环之前),然后直接在循环中重新创建。

因为我正在从数据库中获取 Image 属性,当有人更改数据库中的某些内容时,您应该能够从数据库中获取最新的 Image 属性。

我尝试使用 delete Image[i]free()delete[](整个数组)但我总是得到访问冲突错误。这是我的以下代码:

TImage *Image[c]= ; //c is 5

我想在这里删除旧的图片,然后在下面的循环中创建新的

for (int i = 0; i < c; i++) 
{
str = " Test "

Image[i] = new TImage(this);
Image[i]->Parent = BoardItem ;
Image[i]->Height = 20 ;
Image[i]->Width = 20 ;
Image[i]->Position->X = d ; // The program asks you the coordinate at the begining of a new loop
Image[i]->Position->Y = e ;
Image[i]->Bitmap = Icon->Bitmap ;
Image[i]->StyleName = str ;
Image[i]->OnClick = ImageClick ;
}

最佳答案

@Mykola 我从我的代码中提取了示例,因此理解起来并不复杂。在 button2 中,我现在想删除 tabitem1 上的所有图像

void __fastcall TForm2::Button2Click(TObject *Sender)
{
TImage *Image[5] ;

for (int i = 0; i < c; i++) {
Image[i] = new TImage(this);
Image[i]->Parent = TabItem1 ;
Image[i]->Height = 20 ;
Image[i]->Width = 20 ;
Image[i]->Position->X = 10 ;
Image[i]->Position->Y = 10 ;
Image[i]->Bitmap = Image1->Bitmap ;
Image[i]->StyleName = "Something" ;
Image[i]->OnClick = ImageClick ;
}
}
//--------------------------------------------------------------------------
void __fastcall TForm2::ImageClick(TObject *Sender)
{
TImage *Img = dynamic_cast<TImage *>(Sender);
ShowMessage(Img->StyleName);
}
//--------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{

}

关于C++ Builder 删除动态数组的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34705260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com