Delphi中函数定义和声明的位置

  当函数(或过程)A定义在函数(或过程)B之前,那么函数B就可以调用函数A,并且编译成功,例如下面的

procedure TForm1.btn1Click(Sender: TObject); 和   function showstr: string;

unit Test;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;





type

  TForm1 = class(TForm)

    btn1: TButton;

    procedure btn1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}





function showstr: string;

begin

  Result:= 'lala';

end;



procedure TForm1.btn1Click(Sender: TObject);

begin

   ShowMessage(showstr);

end;



end.

 

   当函数(或过程)A定义在函数(或过程)B之后,那么如果函数B调用函数A,在编译时会报错,如下面的例程

还是procedure TForm1.btn1Click(Sender: TObject); 和   function showstr: string;

unit Test;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;





type

  TForm1 = class(TForm)

    btn1: TButton;

    procedure btn1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



procedure TForm1.btn1Click(Sender: TObject);

begin

   ShowMessage(showstr);

end;



function showstr: string;      //showstr在TForm1.btn1Click后定义,且没有在它之前进行声明

begin

  Result:= 'lala';

end;



end.

  要想当函数(或过程)A定义在函数(或过程)B之后,并且函数B调用函数A,在编译时不报错,那就需要现在B前面声明A,然后再在B中调用A,这时候无论A在B之前定义还是在B之后定义,都能够编译成功。如下面的例程

unit Test;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;



function showstr: string;    //首先在interface里面声明





type

  TForm1 = class(TForm)

    btn1: TButton;

    procedure btn1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}





function showstr: string;

begin

  Result:= 'lala';

end;



procedure TForm1.btn1Click(Sender: TObject);

begin

   ShowMessage(showstr);

end;



end.

  

你可能感兴趣的:(Delphi)