delphi – Form.Release NIL

前端之家收集整理的这篇文章主要介绍了delphi – Form.Release NIL前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果Form.Release在使用该表单后调用,它将释放所有相关内存,但不会将该窗体变量设置为nil.
if not assigned (Form1) then
  begin
    Application.CreateForm(Tform1,Form1);
    try
      // Do something
    finally
      Form1.Release
    end;
  end;

为了能够再次调用相同的代码,Form1在某些时候必须设置为nil.从发布我的描述不能做

Form1 := nil;

在释放之后,因为释放过程将在被调用之后直接返回,并且在实际上释放该表单之前.当Form.Release完成后,我无法检测到将表单var设置为nil.

这样做最好的方法是什么?

霍尔格

解决方法

放线
Form1 := nil;

刚刚打电话给Release.

发布只是向窗体发布一个CM_RELEASE消息,允许窗体在处理CM_RELEASE消息之前完成其队列(事件处理程序)中的内容,这意味着通常只是调用Free.所以,在调用Release之后,你不应该假定Form变量仍然指向一个有效的Form,因此把nil放在变量中.

猜你在找的Delphi相关文章