新手,学回调味函数,但出错误,请教原因,错误提示说:'regular procedure and method pointer
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TBackProc = procedure (Msg: String); stdcall;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure MsgInfo(Msg: String); stdcall;
procedure Test(BackProc: TBackProc; Msg: String);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
Test(MsgInfo,'测试回调函数');
end;procedure TForm1.MsgInfo(Msg: String);
begin
ShowMessage(Msg);
end;procedure TForm1.Test(BackProc: TBackProc; Msg: String);
begin
BackProc(Msg);
end;end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TBackProc = procedure (Msg: String); stdcall;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure MsgInfo(Msg: String); stdcall;
procedure Test(BackProc: TBackProc; Msg: String);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
Test(MsgInfo,'测试回调函数');
end;procedure TForm1.MsgInfo(Msg: String);
begin
ShowMessage(Msg);
end;procedure TForm1.Test(BackProc: TBackProc; Msg: String);
begin
BackProc(Msg);
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TBackProc = procedure (Msg: String); stdcall;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure Test(BackProc: TBackProc; Msg: String);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure MsgInfo(Msg: String); stdcall;
begin
ShowMessage(Msg);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Test(MsgInfo,'测试回调函数');
end;procedure TForm1.Test(BackProc: TBackProc; Msg: String);
begin
BackProc(Msg);
end;end.
begin
ShowMessage(Msg);
end;要修改为
procedure MsgInfo(Msg: String);如果是类函数,它压入堆栈的参数不同