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) 的区别
更新到 Go 1.15 或更高版本后出现错误“panic: cannot create context from nil parent”