标题: Access Violations(访问冲突)

hwchwc 2004-08-19 09:38:28

想在主窗体创建时打开数据库,但出现Access Violations(访问冲突)的错误,以前没有出现这样的
问题,可是在设计时可以打开数据库,把代码放到一个按纽里也可以打开,就是在主窗体创建时打不开?
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
sjhjDataModule->IBDatabase1->Connected=true;
}
//---------------------------------------------------------------------------
...全文
112 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ralpha08 2004-08-19
  • 打赏
  • 举报
回复
看看你的程序的 WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
函数你就明白了
应该有这么一段
Application->CreateForm(__classid(TMainForm), &MainForm);//创建主窗体
Application->CreateForm(__classid(TsjhjDataModule), &sjhjDataModule);//创建数据模

//……
Application->Run();
如果你是先创建主窗体的话,这时候程序调用FormCreate,但数据模块还没有创建这时候连的话肯定报错!在Application->Run()得时候调用主窗体的FormShow这时数据模块已经创建,所以不会报错
建议这样写
Application->CreateForm(__classid(TsjhjDataModule), &sjhjDataModule);//创建数据模

Application->CreateForm(__classid(TMainForm), &MainForm);//创建主窗体
先创建数据模块,再创建主窗体,不管实在FormCreate 还是 FromShow里连接都不会报错


hwchwc 2004-08-19
  • 打赏
  • 举报
回复
ralpha08(被水淹死的鱼)的方法也是正确的,但不知道为什么要移到主窗体的上边?
hwchwc 2004-08-19
  • 打赏
  • 举报
回复
谢谢sczyq(我又...........) !!!
问题是解决了,但搞不清楚以前在窗体创建时打开数据库是好的,为什么现在有不行了。想问下老大FormCreate和FormShow下打开数据库有什么不同!!! 谢谢谢谢!
ralpha08 2004-08-19
  • 打赏
  • 举报
回复
打开你的项目,然后这样
Project Options Forms
把sjhjDataModule移到主窗体的上边
sczyq 2004-08-19
  • 打赏
  • 举报
回复
虽然没能仔细分析冲突原因,也建议你:
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
sjhjDataModule->IBDatabase1->Connected=true;
}
//---------------------------------------------------------------------------

13,825

社区成员

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

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