东 东方飞雪 Unregistered / Unconfirmed GUEST, unregistred user! 2005-05-22 #1 窗口的关闭用close 即可, 但是我发现许多大工程里面窗口较多,关闭时都用form:=nil 两者区别是什么?还有效率如何?
东 东方飞雪 Unregistered / Unconfirmed GUEST, unregistred user! 2005-05-22 #2 窗口的关闭用close 即可, 但是我发现许多大工程里面窗口较多,关闭时都用form:=nil 两者区别是什么?还有效率如何?
H helloyzy Unregistered / Unconfirmed GUEST, unregistred user! 2005-05-22 #4 要注意的一点是当你使用form:=nil时,尤其是当这个窗体是你自己创建的,那么在使用 form:=nil前应先form.free,否则form的指针项被你置空了,但它指向的具体内容却还没有释放(其实form仅仅是一个指针),会造成内存泄漏的。 另外,close只是关闭(也可以理解成最小化),你还可以调用form.show使它重新现出来,但如果form.free;form:=nil;后,那么该窗体就被销毁了,除非你重新创建,否则是无法 show出来的 :)
要注意的一点是当你使用form:=nil时,尤其是当这个窗体是你自己创建的,那么在使用 form:=nil前应先form.free,否则form的指针项被你置空了,但它指向的具体内容却还没有释放(其实form仅仅是一个指针),会造成内存泄漏的。 另外,close只是关闭(也可以理解成最小化),你还可以调用form.show使它重新现出来,但如果form.free;form:=nil;后,那么该窗体就被销毁了,除非你重新创建,否则是无法 show出来的 :)
D daWolf Unregistered / Unconfirmed GUEST, unregistred user! 2005-05-22 #5 全局: var form: TForm; procedure... begin if Assigned(form) then FreeAndNil(form); ... end; 局部使用: procedure... var form: TForm; begin form := TForm.Create(nil); try form.ShowModal; finally form.Free; end; ... end;
全局: var form: TForm; procedure... begin if Assigned(form) then FreeAndNil(form); ... end; 局部使用: procedure... var form: TForm; begin form := TForm.Create(nil); try form.ShowModal; finally form.Free; end; ... end;
X xeen Unregistered / Unconfirmed GUEST, unregistred user! 2005-05-22 #7 全局变量或类成员变量释放后最好置为nil,以表示已经释放。 只使用一次的局部变量无所谓。