【问题标题】:C++ access violation: TImage.Picture is nullC++ 访问冲突:TImage.Picture 为空
【发布时间】: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吗? PictureTImage 构造函数中初始化,这表明 TImage 本身没有正确构造。

标签: c++ c++builder access-violation timage


【解决方案1】:

好像是我的设置...
不知何故,我搞砸了一些设置。

我导出了一个新项目的设置,复制了我的包含路径,用导出的设置覆盖了设置并插入了包含。

现在一切都恢复正常了。

【讨论】:

    猜你喜欢
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多