form1->ShowModal(); 时候报地址错误

castlooo 2008-09-27 12:00:36
form1->ShowModal(); 时候报地址错误


form1 在工程中 在 Available Forms 中
在主窗体中
void __fastcall TfmMain::N5Click(TObject *Sender)
{
TForm1 *form1 = new TForm1(Application);
try
{
form1->ShowModal();
}
__finallyi
{
delete form1;
form1 = NULL;
}
}
...全文
201 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangx100 2008-10-10
  • 打赏
  • 举报
回复
Project->Forms->
把你要调用的文件名调到右边的Available forms框中
utin431 2008-10-10
  • 打赏
  • 举报
回复
我在写程序的时候,曾经碰到过地址报错的问题,一般是全局变量的引用问题。
utin431 2008-10-10
  • 打赏
  • 举报
回复
动态生一个窗体的时候,如果已经生成一个窗体实例,则要在工程,选项中将该窗体设为不可用。

还有,如果窗体的类型设置为子窗体,是不能用模态显示的。

看看有没有出现上面所说的问题。

设置窗体为不可用的我这里有个抓图,但不知CSDN怎么上传图片。
gavinzhu 2008-10-10
  • 打赏
  • 举报
回复
应该是OnShow一类里面的处理
gavinzhu 2008-10-10
  • 打赏
  • 举报
回复
问题应该出现在TForms1的构造函数里
MY_MCU 2008-10-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 swordmanwj 的回复:]
BCB在生成一個新的Form時是這樣描述:
Form1.cpp文件:
#include "Form1.h"
TForm1 *Form1 ;
Form1.h文件:
extern PACKAGE TForm1 *Form1;
//其他描述省略,這裡每個新生成的Form類,均被定義成全局的。
而我們常常用這樣的代碼:
TForm1 *Form1 = new TForm1(NULL); //使用NULL,this,Application 均可。
Form1->ShowModal();
delete Form1 ;
//這段代碼…
[/Quote]
支持,学习了。
nbzip 2008-10-10
  • 打赏
  • 举报
回复
汗群众的力量是无穷的,把你能想到的地方都想了.

如果不行,可能内存中有冲突或溢出.你重启后,看下代码看看.
Z_flyer 2008-10-10
  • 打赏
  • 举报
回复
学习ing
joy200699 2008-10-08
  • 打赏
  • 举报
回复
swordmanwj 说的应该没错
fieldisme 2008-10-05
  • 打赏
  • 举报
回复
楼主的代码去掉__finallyi后的i,在我编译器内没有问题,重新建一工程生成两窗口试试,如果没问题,就可能是TForm1内有问题,不然就可能是电脑中毒了
beerboy 2008-10-05
  • 打赏
  • 举报
回复
void __fastcall TfmMain::N5Click(TObject *Sender)
{
TForm1 *form1 = new TForm1(Application);
try
{
form1->ShowModal();
}
__finallyi
{
delete form1;
form1 = NULL; // 应该是这个地方出错了,不要这一句,你在实施。 }
}


castlooo 2008-09-27
  • 打赏
  • 举报
回复
为什么会有地址错误,所有的以new 方式打开的窗口
showmodal 的时候全部地址错误,
什么原因呢?
castlooo 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 castlooo 的帖子:]
form1->ShowModal(); 时候报地址错误


form1 在工程中 在 Available Forms 中
在主窗体中
void __fastcall TfmMain::N5Click(TObject *Sender)
{
TForm1 *form1 = new TForm1(Application);
try
{
form1->ShowModal();
}
__finally
{
delete form1;
form1 = NULL;
}
}
[/Quote]

1. 多个i 是粘贴上来的时候笔误,程序多个i 肯定编译不过去
2.是在TfmMain 中动态 new一个TForm1 ,TfmMain 的意思是主窗体,这个不用说肯定知道吧
fangsp 2008-09-27
  • 打赏
  • 举报
回复

这样就可以了
void __fastcall TfmMain::N5Click(TObject *Sender) 
{
TfmMain *formxx = new TfmMain(Application); ///这里,防止form1重复
try
{
formxx->ShowModal();
}
__finally ///这里,你之前多了个字母
{
delete formxx;
formxx = NULL;
}
}

yumikoo 2008-09-27
  • 打赏
  • 举报
回复

void __fastcall TfmMain::N5Click(TObject *Sender)
{
TfmMain *formxx = new TfmMain(Application); ///这里,防止form1重复
try
{
formxx->ShowModal();
}
__finally ///这里,你之前多了个字母
{
delete formxx;
formxx = NULL;
}
}

jone7319 2008-09-27
  • 打赏
  • 举报
回复
__finallyi //多了一个i
jone7319 2008-09-27
  • 打赏
  • 举报
回复
试了,没问题呀
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TForm1 *form1 = new TForm1(Application);
try
{
form1->ShowModal();
}
__finally
{
delete form1;
form1 = NULL;
}

}
//---------------------------------------------------------------------------
yf2100 2008-09-27
  • 打赏
  • 举报
回复
void __fastcall TfmMain::N5Click(TObject *Sender)
{
TForm1 *form1 = new TForm1(Application);
try
{
form1->ShowModal();
}
__finallyi
{
delete form1;
form1 = NULL;
}
}

注意红字部分
jxw1987628 2008-09-27
  • 打赏
  • 举报
回复
你在ShowModal()需要测试下form1 是否为有效地址

if(form1)
{
form1->ShowModal(); //
}
hemiya 2008-09-27
  • 打赏
  • 举报
回复
swordmanwj说的有道理
我一般自己new窗口,
1,取消ide中的自动创建.
2,注释掉自动代码extern PACKAGE TForm1 *Form1;.
3,try和catch(...)配对.
4,最近使用boost的智能指针,比手动delete好.

#include <boost/scoped_ptr.hpp>

boost::scoped_ptr<TForm> frm(new TForm1(this));
frm->ShowModal();
加载更多回复(3)

13,825

社区成员

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

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