我在构造函数中传递了一个adoquery的指针给new出来的一个form2,为什么不能再form2中使用了?
TForm2 *Form2=new TForm2(this,qry1);
Form2->ShowModal();
delete Form2;
========================
__fastcall TForm2::TForm2(TComponent* Owner,TADOQuery *qry1)
: TForm(Owner)
{
qry1=qry1;(qry1在这里有值)
}
***************
;(qry1在form2的函数中变成了null,为什么了)
AnsiString sSql="";
qry1->SQL->Clear();
sSql="select top(1) id from history";
qry1->SQL->Add(sSql);
qry1->Open();
谢谢了
问题点数:40、回复次数:5Top
1 楼WaveYang(波光·弦影)回复于 2006-04-02 10:52:21 得分 10
qry1=qry1;(qry1在这里有值)
问题就在这里。 Form2里面的qry1改名为qry。Top
2 楼Ring_Pt(已是黄昏独自愁)回复于 2006-04-02 12:26:30 得分 10
在Form2的头文件里 TADOQuery *qry;
__fastcall TForm2::TForm2(TComponent* Owner,TADOQuery *qry1)
: TForm(Owner)
{
qry = new TADOQuery(Application);
qry = qry1;(qry1在这里有值)
}
另外 AnsiString sSql="";
qry1->SQL->Clear(); 你这句是在Form中执行的吗? 如果是 那qry1中的值已经被你清空了
Top
3 楼icwin(www.cat898.com.cn)回复于 2006-04-11 22:27:06 得分 0
为什么了?Top
4 楼xiaoshi0(Rain)回复于 2006-04-12 02:14:03 得分 10
你不知道局部变量会屏蔽外部变量么?
当你在函数中用的参数名和你的成员变量名相同时,成员变量就被屏蔽了
所以你的赋值操作根本没有将你想得到的指针带到函数外面去
所以在其他函数中不能用Top
5 楼caizhen2000_82(猛将兄!!!)回复于 2006-04-12 08:58:20 得分 10
还有要在头文件中声明一下Top




