delphi 精要-读书笔记(过程类型,方法类型)

原创 2006年06月13日 20:24:00

下面是对两种数据类型的认识(过程类型,方法类型)

1.过程类型

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
type
    TOneFun=function(X:Integer):Integer;

function SomeFunction(X:Integer):Integer;
begin
   Result:=X*2
end;

function SomeCallBack(X:Integer;OneFun:TOneFun):Integer;  //这个相当于一个回调函数
begin
   Result:=OneFun(X);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   F:TOneFun;
   I,J:Integer;
begin
   F:=SomeFunction;
   I:=F(4);
   j:=SomeCallBack(4,F);
   if i=j then
     showmessage('F(4)和SomeCallBack功能相同');
     showmessage(inttostr(i));
     showmessage(inttostr(j));
end;

end.

2.方法类型

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure ShowInfo;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{
  方法指针可以用定义在System单元的一个记录描述
  type
    TMethod=record
    code,data :Pointer;

  它包含两个指针code和data,code可以看作是方法地址的指针,data可以看做是方法所属对
  象的指针
}

procedure TForm1.Button1Click(Sender: TObject);
type
   TMyProcedure=procedure of object;  //定义了一个方法类型
var
   OneProcedure:TMyProcedure;  //声明一个方法类型的变量
begin
   OneProcedure:=Form1.ShowInfo;  //给方法指针赋值
   {
    也可以这样给方法指针赋值
    TMethod(OneProcedure).code:=Form1.MethodAddress('showinfo');
    TMethod(OneProcedure).data:=Form1;
   }
   ShowMessage(TObject(TMethod(OneProcedure).Data).ClassName);
   OneProcedure;
end;

procedure TForm1.ShowInfo;
begin
   ShowMessage(Self.Name);
end;

end.

过程类型的变量是指向过程的指针,和回调函数差不多,方法类型的变量是指向方法的指针,写法上还比过程类型多了 of objects,方法类型的变量只能通过对象来引用

Delphi:记录类型、过程指针、函数(方法)指针字段的应用

由于工作关系使用delphi已经有一年时间,
  • jakrq
  • jakrq
  • 2014年10月14日 14:54
  • 938

delphi 过程类型

Procedural types(过程类型) Procedural types: Overview(概述) 过程类型允许你把过程和函数作为“值”看待,它可以赋给变量或传给其它过程和函数。比如,假设...
  • lailai186
  • lailai186
  • 2012年04月10日 21:58
  • 2146

《Android开发精要》读书笔记——Android的系统架构

按照功能结构和面向人群进行划分 应用部分:包含在Android设备上运行的所有应用,它们是Android系统中直接面向用户的部分。 核心部分:Android系统中核心的功能实现,包括应用框架、核心类...
  • gengzhikui1992
  • gengzhikui1992
  • 2016年02月29日 17:05
  • 1342

《精要主义》读书笔记(一)

重要 必须做的事情其实并不多,如果把这些能够摘清楚,然后做好,看看效果如何?...
  • aomandeshangxiao
  • aomandeshangxiao
  • 2017年12月17日 21:40
  • 172

Delphi的5种方法类型

Delphi的方法类型有:1.静态方法 (Static) 默认类型,可以省略关键字2.虚拟方法 (Virtual)3.动态方法 (Dynamic)4.消息方法 (Message)5.抽象法方 (Abs...
  • cceevv
  • cceevv
  • 2010年05月17日 01:05
  • 3797

《德鲁克管理思想精要》读书笔记小结

《德鲁克管理思想精要》是集德鲁克毕生著作精华于一身,是一本浓缩了德鲁克几十年关于“管理”、“个人”和“社会”思考的著作。融社会学、历史学、哲学和经济学等领域的知识为一体,把微观管理学置于宏观世界之中,...
  • o2o_o2o
  • o2o_o2o
  • 2013年03月02日 21:16
  • 1345

过程类型,方法类型

下面是对两种数据类型的认识(过程类型,方法类型)1.过程类型unit Unit1; interface uses Windows, Messages, SysUtils, Variants,...
  • jjxboy
  • jjxboy
  • 2010年11月11日 09:45
  • 308

《Unity Shader入门精要》读书笔记——渲染流水线

读《Unity Shader入门精要》总结    概述        渲染流水线的最终目的在于生成或者说是渲染一张二维纹理,即我们在电脑屏幕上看到的所有效果。        渲染流程大...
  • MacYosef
  • MacYosef
  • 2018年01月10日 22:40
  • 52

Unity Shader入门精要笔记(十一):基础单张纹理

纹理最基础的目的就是用一张图片控制模型的外观,使用纹理映射技术,把一张图附在模型表面,逐纹素的控制模型的颜色。 美术人员会在建模软件中利用纹理展开技术把纹理映射坐标存储在每个顶点上。纹理映射坐标定义了...
  • lzhq1982
  • lzhq1982
  • 2017年07月13日 10:43
  • 1931

《Unity Shader入门精要》笔记(六) 高级效果

第十二章 屏幕后处理效果 什么叫屏幕后处理效果? 一种屏幕特效处理方法,应该是基于场景绘制完之后,再处理的一些效果,所以叫后处理。 有什么样的效果可以在在屏幕后处理中完成? 其实...
  • BDalasja
  • BDalasja
  • 2018年01月25日 11:32
  • 16
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:delphi 精要-读书笔记(过程类型,方法类型)
举报原因:
原因补充:

(最多只允许输入30个字)