编写程序时几处不明白的地方(二) (50分)

L

linli0

Unregistered / Unconfirmed
GUEST, unregistred user!
请帮忙解释如下代码的意思:

If not Assigned(frmMes) then

frmMes:= TfrmMes.Create(nil);
frmMes.Show;
注:frmMes是一个窗体对象。
 
如果frmMe没有分配内存,就创建一个对象
然后调用改队形的方法
 
如果frmMes还没有创建实例(就是说,frmMes还指向nil或随机值,)
调用frmMes所属类的Create方法,为其创建实例(分配空间)
显示该窗体;

说明: 当窗体未被创建时,直接调用窗体的show方法,会产生一个运行错误,因此,要有一个if 语句
创建窗体可以使用TfrmMes.Create, 也可以使用Application.creatForm(TfrmMes,frmMes).
 
如果frmMes对象没有创建,则调TfrmMes类的Create方法创建frmMes对象.
最后,调用窗体的show方法,显示frmMes窗体对象。
 
对象的概念。没有创建的对象是不能直接调用的。
对象使用步骤:定义,声明,创建,使用。
 
》如果frmMes还没有创建实例(就是说,frmMes还指向nil或随机值,)
注意assigned判断的是一个指针是否是nil,所以指向随机值也会返回ture
 
DNChen说得对!
{B-)
 
呵呵,谢谢
 
同意wjc,不过要注意,frmMes.Free调用后,下次调用Assigned(frmMes)的值
仍然为TRUE,需要frmMes := nil语句后才能使之为FALSE;
 
不好意思,打个浑:
是不是最好用 frm.Release 而不用 Free ?
 
用Assigned判断frmMes窗体是否已经创建,如果没有,则调用Create方法
创建frmMes的实例,然后调用frmMes.Show显示窗体。如果已经创建了,就直接显示。
 
先创建,再Show,防止出错
If语句主要是防止创建一个窗体的多个实例,否则你执行多次后可能
Error:系统资源严重不足,then
: Reset->Restart
 
free后应记住将该对象赋为nil
 
新手小声的问DNChen,Assigned判断的是指针
是不是就是说frmMes(Tform)是指针的一种
没搞明白
 
接受答案了.
 

Similar threads

顶部