函数不是这样定义的吗?(50分)

  • 主题发起人 主题发起人 ReStart
  • 开始时间 开始时间
R

ReStart

Unregistered / Unconfirmed
GUEST, unregistred user!
我学到函数了,试定义了一个返回1到10的阶乘的和的函数Sumfac,可是为什么通不过呢?
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
function Sumfac:Integer;
procedure Edit1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

function Sumfac:Integer;
var
I,S:Integer;
begin
Result:=1;
for I:=1 to 10 do
begin
Result:=Result*I;
S:=S+Result;
end;
Sumfac:=S;
end;

{$R *.DFM}

procedure TForm1.Edit1Click(Sender: TObject);
begin
edit1.text:=IntToStr(Sumfac);
end;

end.
 
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
function Sumfac:Integer;
procedure Edit1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

function tform1.Sumfac:Integer;
var
I,S:Integer;
begin
Result:=1;
for I:=1 to 10 do
begin
Result:=Result*I;
S:=S+Result;
end;

end;

{$R *.DFM}

procedure TForm1.Edit1Click(Sender: TObject);
begin
edit1.text:=IntToStr(Sumfac);
end;

end.
 
编译终于通过了啊,谢谢!原来是在定义的时候写function tform1.Sumfac:Integer;
但是为什么呢?这不是把这个函数当作了Tform1的方法了吗?那在引用的时候为什又不用
写:tform1.Sumfac了?
 
你可以不声明函数,只要在调用函数之前实现函数就行了.
因为你的函数和函数调用是在同一个类中的,所以自然就不用TForm1.Sumfac了。
在其他类中调用时就必须加上类名了。
 
多人接受答案了。
 
后退
顶部