在一单元中定义Database为什么编译没问题,运行时却总报错?大家请看看!在线等!

cfqmxh 2005-08-29 10:53:11
我在Unit2.h文件中是这样定义的:
#ifndef Unit2H
#define Unit2H
#include <DB.hpp>
#include <DBTables.hpp>
//---------------------------------------------------------------------------
class abc
{
private:

public:
TDatabase *Database;
TQuery *Query;
abc();
void __fastcall smg();
}xyz;
#endif

然后在Unit2.cpp文件中初始化Database:
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#pragma package(smart_init)
abc::abc()
{
//Database = new TDatabase();
Database->AliasName = "2102005";
Database->DatabaseName = "aaa";
Database->LoginPrompt = false;
Database->Connected = true;
Query->DatabaseName = "aaa";
}

void __fastcall abc::smg()
{

}

然后我在一窗口中包含该单元后调用:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
xyz.smg();
}
运行到构造函数中:
Database->AliasName = "2102005";语句出错!
报的好象是地址错,一长串,看不懂!我猜是否要初始化Database,可
Database = new TDatabase(this);却行不通.
哪位遇到过该情况的请指教一二,谢谢!在线等!
...全文
121 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
YoungMonkey 2005-08-29
  • 打赏
  • 举报
回复
用Database = new TDatabase(NULL);
动态生成组件用完之后不要忘了delete Database,不然会内存泄漏。
cfqmxh 2005-08-29
  • 打赏
  • 举报
回复
搞定!
Database = new TDatabase(NULL);
既可!
cfqmxh 2005-08-29
  • 打赏
  • 举报
回复
我也发现是这个原因!
Database怎么new法?

Database = new TDatabase(this)吗?
晨星 2005-08-29
  • 打赏
  • 举报
回复
Database只是个指针,肯定需要先把对象new出来,也就是让这个指针指向一个合法的对象后,才能给各个字段赋值。

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧