这是本人做的实例
但是编译出错
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
Tmyfunc=function(m:integer):real; //定义的过程类型
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure sigdo(e1,e2:integer;funp:Tmyfunc);//
function f1(k:integer):real;//
function f2(m:integer):real;//
function f3(j:integer):real;//
end;
Tmyfunc2=function(m:integer):real; //var
Form1: TForm1;implementation{$R *.dfm}{ TForm1 }{ TForm1 }function TForm1.f1(k: integer): real;
begin
f1:=1/1;
end;function TForm1.f2(m: integer): real;
begin
f2:=ln(1);
end;function TForm1.f3(j: integer): real;
begin
f3:=sin(1/1);
end;procedure TForm1.sigdo(e1, e2: integer; funp: Tmyfunc);
var
s:real;
n:integer;
begin
s:=0;
for n:=e1 to e2 do s:=s+funp(n);end;procedure TForm1.Button1Click(Sender: TObject);
begin
sigdo(1,100,f);
sigdo(21,50,f2);
sigdo(5,80,f3);
end;
end.
但是编译出错
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
Tmyfunc=function(m:integer):real; //定义的过程类型
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure sigdo(e1,e2:integer;funp:Tmyfunc);//
function f1(k:integer):real;//
function f2(m:integer):real;//
function f3(j:integer):real;//
end;
Tmyfunc2=function(m:integer):real; //var
Form1: TForm1;implementation{$R *.dfm}{ TForm1 }{ TForm1 }function TForm1.f1(k: integer): real;
begin
f1:=1/1;
end;function TForm1.f2(m: integer): real;
begin
f2:=ln(1);
end;function TForm1.f3(j: integer): real;
begin
f3:=sin(1/1);
end;procedure TForm1.sigdo(e1, e2: integer; funp: Tmyfunc);
var
s:real;
n:integer;
begin
s:=0;
for n:=e1 to e2 do s:=s+funp(n);end;procedure TForm1.Button1Click(Sender: TObject);
begin
sigdo(1,100,f);
sigdo(21,50,f2);
sigdo(5,80,f3);
end;
end.
begin
result:=1/1;
end;
在说了在delphi result=函数名(返回芝)
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TMyFun=function(const m:integer):integer;
var
Form1: TForm1;
myFun:TMyFun;
implementation{$R *.dfm}
function t1(const m:integer):integer;
begin
result:=m+1;
end;function t2(const m:integer):integer;
begin
result:=m+2;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
MyFun:=t1;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
myFun:=t2;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Text:=IntToStr(MyFun(4));
end;end.
begin
sigdo(1,100,f);
sigdo(21,50,f2);
sigdo(5,80,f3);
end;
上面的f是不是要改成f1啊,f都不是函数名
其实在代码中是f1谢谢各位
[Error] Unit1.pas(69): Incompatible types: 'regular procedure and method pointer'
[Error] Unit1.pas(70): Incompatible types: 'regular procedure and method pointer'
[Error] Unit1.pas(71): Incompatible types: 'regular procedure and method pointer'