回调函数

implementation

type
  Add = function(I : Integer):Integer; //声明一个方法类型,真心觉得delphi中的类型太多太多了,需要学习的路还很长.
//--------------------------------------------------------------------------------------------------------------------
function Addx(I : Integer): Integer;  //声明一个和上面方法类型相同参数的函数。
  begin
    Result := I * 2;
  end;

function AddS(I : Integer;Fun : Add):Integer; //以方法类型作为参数
begin
  Result := I + Fun(I);
  ShowMessage(IntToStr(Result));
end;
  {$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
var
  IncX : Add; // 声明方法类型的变量。
  I : Integer;
begin
  IncX := Addx;  //让这个方法类型指向和它相同参数的变量、
  I := IncX(4); //现在操作这个IncX就等于操作Add。他们已经具备相同的功能;
  ShowMessage(IntToStr(I)); // 结果是8
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  IncX : Add;
begin
  IncX := Addx;
  //回调函数的实现
  AddS(2,IncX);  //结果 = 6   因为  2 + 2*2 =6
end;
end.

posted @ 2012-07-08 16:24  梦断难寻  阅读(397)  评论(0编辑  收藏  举报