Dim 変数定義
Dimは変数の定義に使用します。Delphiでは var節で変数を宣言します。 VBとは微妙に違うので気をつけてください。変数は var節だけで宣言できます。ですので処理の途中で宣言するといった事はできません。宣言していない変数は使用できません。
| ■ var節で変数を宣言している例 |
procedure TForm1.Button1Click(Sender: TObject);
const
WeekName : array [0..6] of string = ('日','月','火','水','木','金','土');
var
datBirthday : TDateTime; {TDateTime型の変数 datBirthday}
intWeek : integer; {integer型の変数 intWeek}
begin
//曜日を求める日付
datBirthday := StrToDate('1998/9/18');
//何曜日?
intWeek := DayOfWeek(datBirthday);
//表示
Label1.Caption := DateToStr(datBirthDay) + 'は' +
WeekName[intWeek - 1] + '曜日です。';
end;
|
同じ型なら以下のように宣言することも可能です。Delphiでは 型の指定は必須です。
var
intYY, intMM, intDD : integer;
|
前回の例ではその手続き(procedure Button1Click)の中だけで有効な ローカル変数として宣言されます。
では、ユニット内(フォーム内)のどこででも有効な変数の定義は どうするのでしょうか?
VBではそのフォームのGeneralに宣言します。Delphiではユニット の implementation部に宣言すればよいのです。
Delphiのソースの上の方に、この implementation部はあります。
| ■ implementation部に変数を宣言する例 |
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TfrmMain = class(TForm)
StatusBar1: TStatusBar;
btnCut: TPanelButton;
btnPaste: TPanelButton;
procedure FormCreate(Sender: TObject);
procedure btnPasteClick(Sender: TObject);
procedure btnCutClick(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
frmMain: TfrmMain;
implementation
var
blnEdit : boolean;
blnCopy : boolean;
strDate : array [0..11] of String;
sltMemo : TStringList;
{$R *.DFM}
|
この場合、変数はクラス(TForm)のメンバではなくユニットの変数になります。フォームのメンバとして扱いたい場合は TFormの Privateに宣言します。
| ■ TFormのメンバとして宣言した例 |
type
TfrmMain = class(TForm)
StatusBar1: TStatusBar;
btnCut: TPanelButton;
btnPaste: TPanelButton;
procedure FormCreate(Sender: TObject);
procedure btnPasteClick(Sender: TObject);
procedure btnCutClick(Sender: TObject);
private
{ Private 宣言 }
blnEdit : boolean;
blnCopy : boolean;
strDate : array [0..11] of String;
sltMemo : TStringList;
public
{ Public 宣言 }
end;
|
次に全ユニットで参照可能なグローバル変数の定義の方法です。 VBではPublicやGlobalで宣言します。Delphiではユニットの
Interface部に宣言する方法があります。また、フォームのメンバとしてPublic に宣言する方法があります。
(フォームのメンバとした場合はフォームのインスタンスが無いと使用できません。)
| ■ グローバル変数を宣言した例 |
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TfrmMain = class(TForm)
StatusBar1: TStatusBar;
btnCut: TPanelButton;
btnPaste: TPanelButton;
procedure FormCreate(Sender: TObject);
procedure btnPasteClick(Sender: TObject);
procedure btnCutClick(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
intDelphi : integer;
end;
var
frmMain: TfrmMain; {フォームが定義済みです}
intPascal : integer;
|
他のユニットからこの変数を参照する場合は参照する側のuses節に 参照先のユニット名を追加します。
| ■ uses節に参照先ユニット名を追加した例 |
var
Form1: TForm1;
implementation
{$R *.DFM}
uses
Unit2; {追加するのはフォーム名ではなくユニット名(ファイル名)です}
procedure TForm1.Button1Click(Sender: TObject);
const
|
Interface部に宣言した変数 intPascalは普通の変数と同じように使用できます。 しかしPublicに宣言した変数の方は少し違います。フォームのメンバとして扱うのでフォームを意識します。
| ■ 他のフォームのメンバにアクセスする例 |
procedure TForm1.Button2Click(Sender: TObject);
var
intData : integer;
begin
intData := (Form2.intMoney * 2);
Table1.FieldByName('Money').AsInteger := intData;
|
ここらへんに関しては Kobayashi氏が運営する GreenSpace HomePage のでべろっぱのすすめにて詳しく書かれています。是非参考にしてください。
関連項目
Const 定数定義
Global 変数定義