//要點15: 調用其他單元的函數
//包含函數的單元:
unit Unit2;
interface
function MyFun(x,y: Integer): Integer; {函數必須在接口區聲明}
implementation
function MyFun(x,y: Integer): Integer; {函數必須在函數區實現}
begin
Result := x + y;
end;
end.
//調用函數的單元:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses Unit2; {必須 uses 定義函數的單元}
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
i := MyFun(1,2); {調用函數}
//i := Unit2.MyFun(1,2); {有時為了避免重名, 需要這樣調用}
ShowMessage(IntToStr(i)); {3}
end;
end.
//要點16: 在實現區(implementation), 自定義的方法是有順序的
function MyFunA(x: Integer): Integer;
begin
Result := Sqr(x); {取平方}
//MyFunB(x); {前面的函數不能調用後面的函數}
end;
function MyFunB(x: Integer): Integer;
begin
Result := MyFunA(x) * 2; {可以調用前面的函數 MyFunA}
end;
//要點17: 如果前面的方法要調用後面的方法, 後面的方法需要提前聲明
function MyFunB(x: Integer): Integer; forward; {使用 forward 指示字提 前聲明}
function MyFunA(x: Integer): Integer;
begin
Result := MyFunB(x) * 3; {要調用後面的方法, 後面的方法需要提前聲明}
end;
function MyFunB(x: Integer): Integer;
begin
Result := Abs(x);
end;