前言
在delphi進行編碼時,工程中經常需要用到全局變量,是以正确的使用全局變量将尤為重要。本文主要介紹在public中和在implementation前面定義的全局變量的差別。
一、單元檔案定義的全局變量
先附上一個單元檔案,代碼中給出個變量所處的位置。
單元名稱為uni1.pas
TForm1=Class(TForm)
Edit1 : TEdit;
Label1 : TLabel;
Button1 : TButton;
Button2 : TButton;
Button3 : Tbutton;
procedure Button1Click(Sender : TObject);
procedure Button2Click(Sender : TObject);
procedure Button3Click(Sender : TObject);
private
{Private declarations}
Name : String='Deen'; //成員變量;
public
{Public declarations}
end;
Var
Form1 : TForm;
Name : String;//全局變量。
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender : TObject);
var
Name : String; //局部變量;
begin
Name := '局部變量';
Edit1.Text := Name;
end;
end.
二、各變量的定義、作用範圍及使用
全局變量:是指在類外聲明的變量,通常這種變量時在整個工程内有效的,也就是說在整個工程中的類都可以使用。該變量的生存周期是在工程建立時有效,工程銷毀時銷毀。
在其他單元檔案中可直接使用,不需加被引用單元的窗體名。
比如我在一個窗體中,聲明了一個全局變量,如下:
var
W_POS_BankForm: TW_POS_BankForm;
Test:string='dancy'; //測試全局變量
那麼我就可以直接在另一個窗體中使用,如下:
ShowMessage(Test);
注:Test前面可以加檔案名(注意不是窗體名),如unit.Test.
成員變量:是指在類中聲明的變量,這種變量在類中的方法都可以使用。其生命周期是在類建立時有效,類銷毀時銷毀。
在其他單元檔案中使用時,需要加被引用單元的窗體名。
Form1.name;
name前面加的是窗體名.
局部變量:是指在方法内部聲明的變量,這種變量隻能在方法内部使用。其生命周期也是在方法内部有效,當方法調用結束後,其内部所聲明的變量也随之銷毀。
隻在本單元中使用。
三、在public中和在implementation前面定義的全局變量的差別
不管是使用成員變量還是全局變量,都需把它們先use到使用的單元檔案中。
在public中定義的是類成員,在implementation上面定義的才是全局變量 Public中的定義的,在其他單元(Unit)引用要加該單元的名稱。 而在implementation上面引用的才是真正的全局變量,在其他單元中引用,直接調用就可以,不用加單元名稱。