delphi 函数指针 方法指针
unit Unit1;

interface

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

type
TEvent = procedure ()
of object;
TProc
= procedure();

TForm1 = class(TForm)
btn1:
TButton;
procedure
btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure
TForm1.btn1Click(Sender: TObject);
begin
showmessage('方法指针的长度是:'+Inttostr(SizeOf(TEvent)));
showmessage('函数指针的长度是:'+Inttostr(SizeOf(TProc)));
end;

//函数指针是指向函数的32位指针,占4个字节。
//过程的指针结构如下
// PProc
= ^TProc;//过程指针
// TProc = record
// Code:
Pointer;//指向过程的代码
// end;
//方法指针是指向一个结构。方法的指针结构如下
//
PMethod = ^TMethod;//方法指针
// TMethod = record
// Code:
Pointer;//指向方法的代码
//
Data: Pointer;//指向对象的数据
// end;



end.





Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,

StdCtrls;



TEvent = procedure ()
of object;

= procedure();


TForm1 = class(TForm)

TButton;

btn1Click(Sender: TObject);





end;



Form1: TForm1;






TForm1.btn1Click(Sender: TObject);


showmessage('方法指针的长度是:'+Inttostr(SizeOf(TEvent)));

showmessage('函数指针的长度是:'+Inttostr(SizeOf(TProc)));





= ^TProc;//过程指针


Pointer;//指向过程的代码



PMethod = ^TMethod;//方法指针


Pointer;//指向方法的代码

Data: Pointer;//指向对象的数据





【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步