回调函数的问题?

fengzenghao 2008-02-28 08:59:10
源码如下:
program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils,Dialogs;
type
tintpoint=^integer;
type
tcallback=procedure (i:tintpoint);
procedure callback(i:tintpoint);
begin


if i^=0 then
begin
showmessage('well');
end
else
begin
showmessage('bad') ;
end;
end;
procedure mycall(call:tcallback);
var
int:integer;
begin


callback(@int);

end;
var
in1:integer;

begin
readln(in1);
mycall(@in1);

end.
也不知道这样是不是定义回调函数,还有就是程序老实输出bad,无法输出well,那里有错误请执教
...全文
85 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Corn1 2008-03-05
  • 打赏
  • 举报
回复
说得简单点:
假如说,主程序是UnitA,UnitA要调用B.dll,但B.dll也需要调用UnitA里面的过程ProcC,那么,UnitA就把这个ProcC的地址告诉B.dll,让B.dll通过这个地址去调用ProcC。这就是所谓的回调,即被调用方通过某种途径去调用这个调用方的某个过程。
这是我的理解
lengx7 2008-03-04
  • 打赏
  • 举报
回复
我也不太明白。。。
fengzenghao 2008-02-29
  • 打赏
  • 举报
回复
在这里表示感谢,说实话,我真的不大明白.
jadeluo 2008-02-28
  • 打赏
  • 举报
回复
楼主没理解清楚回调函数的概念,举个例子来说明一下:

A函数提供了某种服务,不过这个服务不是实时的,在调用A函数之后需要过一会儿(这个时间长短不确定)才会结束。

现在B想调用A函数,并且想知道服务何时完成,于是B在调用A函数时同时告诉A函数另外一个函数C,A函数会在服务完成时去调用C函数。

这个C函数就是所谓的回调函数。



type
tcallback = procedure (i: Integer);

procedure callback(i: Integer);
begin
if i = 0 then
showmessage('well')
else
showmessage('bad');
end;

procedure mycall(call: tcallback);
begin
call (Random(2)); //A回调C
end;

begin
mycall(callback); //B调用A,并且告诉A回调函数C是哪一下
end.

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧