谁能告诉我下面这两句什么意思? ( 积分: 0 )

  • 主题发起人 主题发起人 cwforever
  • 开始时间 开始时间
C

cwforever

Unregistered / Unconfirmed
GUEST, unregistred user!
不好意思,没分了.谁能告诉我下面这两句什么意思?
主要是第一句.谢了!!
if Form1= nil then
Form1 := TForm.Create(Application);
 
不好意思,没分了.谁能告诉我下面这两句什么意思?
主要是第一句.谢了!!
if Form1= nil then
Form1 := TForm.Create(Application);
 
如果窗体没有创建
则创建窗体
 
TO:huyongxiao
谢了,不好意思,没分了。每次都给人100,现在就剩下36分了。
谢谢!!我的qq34547344.交个朋友好吗?
 
36分我也不嫌少啊,呵呵,
 
不会吧,这么好挣得分?
 
hehe.下次一定给你。告诉我你QQ行吗?想跟你学点东西。
 
if assigned(Form1) = false then
begin
Form1 := TForm.Create(Application);
end;
 
这种代码很不安全,因为delphi在释放对象时,对象的引用不会被编译器设为空。就是说,如果你释放Form1后,没有将Form1:=nil 那么,这段代码多半会出问题,因为if assigned(Form1) = false 这样的代码将返回真,就是说此时的Form1指向的对象已经被释放,但是楼上的代码仍然不会重新创建对象。
这种错误测试时很难找出来,因为需要form1被释放之后,再调用此段代码,才可能暴露问题(如果你运气好,被释放的对象没有被破坏,这段代码将会带病执行,^o^)。

曾经尝试写一个通用的对象工厂,但是,失败了:)不过这种简单的对象创建和释放问题完全可以使用单例模式来解决。
。。。
进一步研究中,那位帅哥美女有建议的,请赐教:)QQ56364344
 
用FreeAndNil呀!
 

Similar threads

后退
顶部