delphi7中create(nil)与create(self)区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi7中create(nil)与create(self)区别相关的知识,希望对你有一定的参考价值。

create(nil)可以用FREE来释放,但create(self)要用什么语句释放,这两种语句一般在什么样的情况下使用。

参考技术A 还有一个据说create(nil) 比create(self) 快些 参考技术B 这两种方法在元件创建时并没有太多区别,只是create(nil) 代表 object 创建无属主,create(self) 一般代表object归属于当前目标而已,如:

在一个 form 中要创建一个 panel 可以写成 panel := TPanel.Create(nil); 也可以写成 panel := TPanel.Create(Self);
但是在析构destory 的时候就有区别了,无属主的控件需要自己来控制其destory,而有属主的panel 在 self 所指定的控件 destory 的同时,它也同时destory 了

Delphi Ping

function PingServer(HostIP: string;LinkTimeOut: integer): boolean;
var
  RRemoteC: TIdIcmpClient;
  AReplyStatus: TReplyStatus;
begin
  try
    result := true;
    RRemoteC := TIdIcmpClient.Create(nil);
    RRemoteC.Host := HostIP;
    RRemoteC.ReceiveTimeout := LinkTimeOut;
    try
      RRemoteC.Ping;
      AReplyStatus := RRemoteC.ReplyStatus;
      if (AReplyStatus.ReplyStatusType = rsTimeOut) then
      begin
        result := false;
      end;
    except
      result := false;
    end;
  finally
    RRemoteC.Free;
  end;
end;

  

以上是关于delphi7中create(nil)与create(self)区别的主要内容,如果未能解决你的问题,请参考以下文章

[原创] Delphi Create(Application) 和 Create(nil) 的区别

delphi7 中如何点击菜单项弹出新窗体

更新到 Go 1.15 或更高版本后出现错误“panic: cannot create context from nil parent”

在运行时创建表单和 WebBrowser

delphi 7 unable to create process

Delphi7中如何读取或显示Bytes类型的字段