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 変数定義