【发布时间】:2012-08-16 22:53:29
【问题描述】:
我最近在我的 c++-builder-project-settings 中进行了一些小的更改以分发构建的应用程序,但是现在似乎缺少某种初始化。
在我使用它之前(正常工作):
TPngImage *img=new TPngImage;
img->LoadFromFile(pfad);
Image1->Picture->Assign(img);
但是,我突然收到错误消息:访问冲突...访问 0x0000000。 我检查并注意到 Image1->Picture 为 Null。 Image1 当然是每个设计师添加的 TImage-Object。 我正在使用 embarcaderos XE2 16 c++-Builder。
是否有此设置,或者您能告诉我,我必须做什么? 我想到了 Image1->Picture=new TPicture();已经,但这也是 Null...
【问题讨论】:
-
Image1在哪里初始化?如果有的话? -
@FailedDev 好吧,我使用了 c++-builder-designer,所以我认为它会在某个地方自动初始化...好吧,在我的 .h 文件中有一个条目 __published: ... TImage *Image1;...但这更像是一个声明...
-
那么您必须找到定义
Image的缺失代码部分并发布。此外,我从未听说过embarcaderos XE2 16 c++-Builder,所以我无法提出任何建议。编辑:是的,那是你的问题。您有一个未初始化为任何有用的指针:) -
@FailedDev 好吧,它会自动生成一些代码...例如 class TForm1:public TForm{__published: TImage *Image1;}... 设计文件 dfm 仅包含其一般属性自己的风格: object Image1:TImage Left=19 Top=215 ... end... 所以,在正常情况下,没有任何正常的定义短语...即使我尝试创建一个新的 TImage 图片- member 为 Null……这正常吗?
-
当你尝试访问
Image1->Picture时,Image1也是NULL吗?Picture在TImage构造函数中初始化,这表明TImage本身没有正确构造。
标签: c++ c++builder access-violation timage