C++ Buidler 6中需要注意的几个问题(2)
则运行goto语句时会报错,这给goto语句的使用带来不便,但如果在goto与目标标识之间加上一对花括弧,则可顺利运行:
goto EndMark;
{ int a=1;
…… }
EndMark:;
C++ Builder将{……}内的变量初始化理解为局部变量的初始化,局部变量的初始化不会对{ }外面的语句有影响。所以适当地使用花括弧,就可以消除C++ Builder对goto语句使用的限制。
3. 动态创建窗口带来的影响
动态创建窗口的好处是在不需要该窗口时可以用delete命令释放内存。但是由于窗口是在内存中完成创建和释放,也存在一些问题。如:在新建的Application中建立Form1、Form2和Form3,Form1上设有Button1和Edit1、Memo1,Form2上设有Button21、Button22和Edit2、Memo2,Form3上设有Button3和Edit3、Memo3。Form1->Button1的Click事件中动态创建窗口Form2,并设置Form2->Button21的Click事件显示窗口Form3,且Form1、Form2、Form3分别各有一个Edit1和Memo1,现在试图通过点击Form3上的Button3按钮分别将Edit3和Memo3中的文字赋给Form2的Edit2和Memo2构件,再通过点击Form2上的Button22按钮把Edit2和Memo2中的文字赋给Form1。
Form1中的函数:
void __fastcall TForm1::Button1Click(TObject *Sender)
{ TForm2 * Form2_N=new TForm2(Form1);
Form2_N ->ShowModal();
delete Form2_N; }
Form2_N中的函数:
void __fastcall TForm2_N::Button21Click(TObject *Sender)
{ Form3->ShowModal();
}
void __fastcall TForm2_N::Button22Click(TObject *Sender)
{ Form1->Edit1->Text=Form2->Edit2->Text;
Form1->Memo1->Text=Form2->Memo2->Text;
this->Close(); }