[原创]Delphi FreeAndNil 是一个过程,并不是函数

Delphi FreeAndNil 是一个过程,并不是函数,看源代码就知道,它的主要作用是清空并释放对象

procedure FreeAndNil(var Obj);
var
  Temp: TObject;
begin
  Temp := TObject(Obj);
  Pointer(Obj) := nil;
  Temp.Free;
end;

看代码的执行顺序,先置空,再释放

置空  清空指针指向内存的地址。

释放 释放实例占用的所有资源。Free后,指针不能再使用

更新时间:2019.12.27

来源于:https://www.cnblogs.com/guorongtao/p/12107245.html

原文地址:https://www.cnblogs.com/guorongtao/p/12107245.html

时间: 2024-10-11 05:17:57

[原创]Delphi FreeAndNil 是一个过程,并不是函数的相关文章

Delphi Android程序启动过程

Delphi的Android程序是原生的程序,也就是NativeActivity.那么就需要先看一下NativeActivity的原理, 在AndroidManifest.xml文件里面指定入口activity为nativeactivity,这样应用程序一启动,java虚拟机这边就开一个主线程,主线程创建一个活动,就是nativeactivity,这个nativeactivity在创建的过程中就会去应用程序的.so动态链接库中寻找一个函数: __ANativeActivity_onCreate(

《zw版·delphi与halcon系列原创教程》zw版_THImagex控件函数列表

<zw版·delphi与halcon系列原创教程>zw版_THImagex控件函数列表 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就要7w多行,但核心控件就是两个: THImagex,图像数据控件,v11版,包括488个函数和子程序 THOperatorSetX,操作主接口控件,v11版,包括1929个子程序 以上两大核心控件,已经删除个别delphi内部属性函数,不影响日常使用. 其他控件,基本上,都是为配合两个控件,提供数据类型支持.辅助功能.已经一些特殊应用(

Delphi中返回类型为string的函数的一个陷阱(不是很懂)

如果类的一个成员函数的返回值是string类型,需要注意一个问题 其返回值可能是错误的 例如函数的实现如下 function GetString( s: string ): string;begin  Result := Result + s;end; 调用方式如下: procedure test();var  i: Integer;  s: string;begin    s := '';    s := GetString( IntToStr( 1 ) );    s := GetStrin

Sqlserver 自建一个过程用于查看表结构

自建一个过程用于查看表结构 CREATE PROC [sp_tableHelp] (@TableName VARCHAR(128) = '' ,@ColName VARCHAR(128)='') AS BEGIN --表结构速查 --Brin --DECLARE @TableName VARCHAR(128) --DECLARE @ColName VARCHAR(128) --SET @TableName = 'tLocatorMove' --SET @ColName = 'nStatus' S

阿庆SQL智能查询分析器,使用delphi开发的一个数据库查询分析管理工具.分享给大家

为方便自己工作,使用delphi开发的一个数据库查询分析管理工具.分享给大家,具体以下特点: 1.由于使用ADO连接,理论支持SQL Server.Access.MySQL.Oracle等所有数据库 2.支持SQL关键词自动提示 3.支持表名自动提示 4.支持表字段自动提示 5.支持SQ关键词.表名.表字段不同颜色显示 6.支持SQL语句注释(包括ACCESS) 7.支持选择部分文字执行SQL语句 8.查询结果支持增加.修改.编辑 9.绿色程序无附加文件,只有一个文件即可运行,文件大小只有400

Elite Container DELPHI下的一个轻量级IoC对象容器

一.简介: Elite Container是DELPHI下的一个轻量级IoC对象容器(IoC:Inverse of Control,反转控制).它是参考了Java中的Spring框架(主要是配置文件的写法),并结合DELPHI的特点来构建的.相比Spring的对象容器,它提供的功能更为精简常用(如对象延迟创建.对象属性自动注入等),降低了学习的难度,并且提供了很多扩展点,你只需简单地写一个插件实现类,并在配置文件中进行简单配置,就可以让Elite Container拥有你的自定义功能! Elit

http--一次完整的HTTP事务是怎样一个过程?【转】

一次完整的HTTP事务是怎样一个过程? 如有收获请给作者点赞 --> 原文链接 声明:本文章中的说法仅是个人理解总结,不一定完全正确,但是可以有助于理解. 当我们在浏览器的地址栏输入 www.linux178.com,然后回车,回车这一瞬间到看到页面到底发生了什么呢? 以下过程仅是个人理解: 域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代

Delphi 如何解决在DLL的入口函数中创建或结束线程时卡死

先看一下使用Delphi开发DLL时如何使用MAIN函数, 通常情况下并不会使用到DLL的MAIN函数,因为delphi的框架已经把Main函数隐藏起来 而工程函数的 begin  end 默认就是MAIN函数的DLL_PROCESS_ATTACH事件的处理代码,如需要完整的处理其他事件, 如 DLL_PROCESS_DETACH,DLL_THREAD_ATTACH, DLL_THREAD_DETACH,可在工程文件中做如下处理: procedure DLLEntryPoint(Reason:D

实现一个简单的curry函数

curry函数是向一个函数传入部分的参数,从而产生一个新的函数,来达到对函数实现套用的操作 首先我们为所有的函数原型添加一个方法 Function.prototype.method = function(name,func) { this.prototype[name] = func; return this; } 在这里我们为Function的原型对象添加了一个method方法 ,这样当我们为函数原型添加方法的时候,就直接添加到Function.prototype中 也就是说我们可以直接这样