常用函数

1.Assigned函数

--->该函数用于测试指定的对象是否为空。

语法 function Assigned(const P):Boolean;

说明:

  • Assigned 用来确定引用的指针或过程是否为空(nil),这个P必须是指针或者引用过程类型的变量;
  • Assigned (P) 对应指针变量的测试 P<>nil,过程变量的 @P<>nil;
  • 如果P为nil,Assigned返回False,否则返回True。
if Assigned(AVS) then      //如果AVS存在且不为Nil,将执行下面的代码
    MList.Lines.Add('类名为'+AVS.ClassName+'的对象存在!')
else
    MList.Lines.Add('对象为空!');

典型应用:

if not Assigned(Form1) then
begin
   Form1:= TForm1.Create(Application);
   Form1.ShowModal;
   Form1.Free;
end;

以上创建之后的窗体采用 Form1.Free 释放,实际上窗体还是存在的,并没有从内存中完全释放。

两种方法纠正:

  1、在Form1窗体中 FormDestroy 销毁事件中 加入 Form1:=nil

  2、把Form1.Free 换成 FreeAndNil(Form1);

2.FreeAndNil过程

--->该函数用于释放指定对象,并设置其为空。

语法
procedure FreeAndNil(var Obj);

说明:

如果某个对象已经没有任何价值,可以将其释放,通常使用该对象的Free方法来完成该操作。

  • Free方法将销毁对象,并且该对象销段后将不能被继续引用;
  • FreeAndNil函数将对象释放后,该对象仍然存在,不过其值为Nil,如果需要继续使用,则可以再次调用构造函数来为其分配空间。
if Assigned(Form1) then
begin
   Form1.close;
   Form1:=nil;
end;
 
//或:
 
if Assigned(Form1) then
begin
   Form1.close;
   FreeAndNil(Form1);
end;
posted @   德琪  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示