delphi 回调函数例子 用函数过程作为参数

转:
今天有个朋友问我怎么用函数或者过程作为函数的参数呢,我说网上有挺多的,然而他告诉我很多例子运行不起来,我搜了几个测试了下,不知道是不是我自己的软件版本的问题,运行不了,所以自己研究了下,把自己能运行的贴出来,和大家分享分享。


先说说回调函数需要注意的几个步骤吧,

首先要声明一个类型;

type TProc = procedure(str:string) of object; //这里的of object 一定要,不然会出错,也可能是有些方法自己不知道吧,希望知道的可以告诉一声;


第二步:定义一个过程

 

procedure test(str:string); //注意这个作为参数的函数内部的参数必须和TProc 的参数一样;
begin
showmessage(str);
end



第三步 定义一个调用test 这个函数的函数


procedure dotest(F:TProc);
begin
F('这是回调函数的测试');
end

第四步 就可以使用了

procedure show();
begin
dotest(test);
end

如果还是不明白就来电简单的完整的例子吧


unit Unit1;

interface

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

type
TFunc = procedure() of object;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function myTest(f:TFunc):string;
procedure abc();
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.abc;
begin
showmessage('这是回调函数测试');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
myTest(abc);
end;

function TForm1.myTest(f:TFunc):string;
begin
f();
end;

end.

 

测试结果是这样的

 


————————————————
版权声明:本文为CSDN博主「创意VS灵感之雨轩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014028956/article/details/46810537

posted @ 2023-06-07 21:01  软件吴  阅读(104)  评论(0)    收藏  举报