Global グローバル変数
VBでの Public や Global は Delphi ではユニットの Interface部 の var
で宣言する方法 (ユニットの変数として宣言) と、 クラスの public で宣言 (クラスの変数として宣言)
するふたつの方法があります。
クラスの変数として宣言した場合、そのクラスのインスタンス、つまりオブジェクトが複数生成された場合に、その数だけ変数の領域が確保されます。ユニットの変数とした場合、その変数はプログラム中で必ず一つしか存在しません。
■ グローバル変数の宣言例 |
unit Unit2; interface type TTestClass = class(TObject) private { Private 宣言 } public { Public 宣言 } //クラスの変数として宣言 ClassVar : string; end; var //ユニットの変数として宣言 UnitVar : string; implementation end. |
上記のユニット、クラスを他のユニットから参照した例が以下のサンプルです。
■ 使用例 |
implementation {$R *.DFM} uses Unit2; procedure TForm1.Button1Click(Sender: TObject); var A, B, C : TTestClass; begin A := TTestClass.Create; B := TTestClass.Create; C := TTestClass.Create; //各クラスの変数へアクセス A.ClassVar := 'Object A Variable'; B.ClassVar := 'Object B Variable'; C.ClassVar := 'Object C Variable'; //Unit2の変数へアクセス //これは Unit2.UnitVar と記述してもよい UnitVar := 'Unit Variable'; A.Free; B.Free; C.Free; end; |
クラスに変数を宣言する場合は直接変数を公開するよりもソレをプロパティとして公開した方が柔軟で、よりオブジェクト指向的です。
■ プロパティとして公開した例 |
type TTestClass = class(TObject) private { Private 宣言 } FClassVar: string; public { Public 宣言 } //プロパティとして宣言 property ClassVar : string read FClassVar write FClassVar; end; |
関連項目
Const 定数定義
Dim 変数定義