頑張れデルファイ!!!#1 ユニットファイルの巻@!


 [記:2003/Dec/30]今回は皆を悩ますユニットファイルを説明だ。Delphiを立ち上げるといきなりウインドウ付きのスケルトンプログラムができる。これは一体どこでどう定義されているのか?VBみたいに「絶対不可侵」のヴェールに包まれたものなのか?いんにゃ。ちゃんと読めるソースから作られているのです。
 さて、このページではデルファイのプログラムはそもそも何処が元なのか、探ります。プロジェクトファイルというファイルを左の列のように、開いて中を見てみます。そして解説をさっと読んでみよう。
 Delphi初心者を悩ますUnitはこのプロジェクトファイルから利用される部品を作っているにすぎないとわかる。左を読んだら右にまとめたことを復習しよう。
 ところでこのページちょっとデザイン悪かったかも。1024×784で左側に検索やお気に入りを出さない状態で幅一杯にブラウザをしてやっと読める。ごめんなさいセンス悪い。

デルファイのトップページ  次のページ(#2)へ

Delphiのバージョン
ver3.0
(Delphiの基本的な仕様が固まったバージョンです。案外まだ使っている人も多いみたい。)
ver6.0
これはただで手に入ります。)
準備 デルファイを立ち上げたら、上のツールバーから 「表示/プロジェクトソース」を選ぶ デルファイを立ち上げたら、上のツールバーから 「表示/プロジェクトマネージャ」を選び、 project.exeのノードで右クリック「ソース」を選ぶ
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
 上のようなソースが現れました。これが、メインプログラムのソースです。
versionが変わっても見事に同じ。

a)まず、一行目でプログラム名称を宣言し
b)uses以下で「これから○○のファイルを使うよ。」と宣言しています。
 ここではFormsというファイルとUnit1.pasのUnit1というモノを使うと宣言
 しています。
c){ }で囲まれたところは普通はコメントなのですが$でコンパイラに指示
 をだす場合もあります。ここではコンパイラ指示です。
d)そしてbegin〜endのメインプログラム。
e)最後にピリオドで終わります。
解説1
Delphiを立ち上げると普通Unit1.pasのファイルしか立ち上がりません。
ユニットファイルはメインプログラムで使われる部品を定義するファイルです。
Delphiユーザーはただしこしこと部品の動作を定義しているんですね。
ところで、ApplicationというのはForms.pasというユニットに定義されている
部品です。(いまのところクラスとか、オブジェクトという言葉を使うのを控
えます)
 プロフェッショナル版以上のDelphiを持っていたら、Forms.pasが同梱されて
いるので、開いて{ Global objects }と書かれたところを検索してください。
 Delphiの情報開示はすごい。VBで部品のコードを見るなんてできないです。
 僕の場合はver3.0がプロ版なので検索すると

{ Global objects }

var
  Application: TApplication;

のようになっているのがわかります。
 Delphiではプログラムで使う部品をこのように定義します。
 varは変数の宣言する部分であることを宣言する決まり言葉(予約語)で、
Applicationという部品を宣言しています。ちなみに部品はプログラミング
の世界の言葉でオブジェクトといわれるものの一種です。
 Applicationの後にコロンをつけて:TApplication;と書かれてます。
 TApplicationは部品の振る舞いを決めるデータや動作が定義してある
「部品の規格」のようなものと思ってください。これはクラスと呼ばれる
ものの一種です。なおセミコロンは文章の終わりを示します。
 実は、Applicationオブジェクトとはプログラムそのものを指します。
 まず最初の文  Application.Initialize;でプログラムの初期化をします。
 (セミコロンで終わってますね。)
  第二の文 Application.CreateForm(TForm1, Form1);でプログラムに
Unit1(Delphiプログラマがいじっているユニットファイル)で定義した
Form1を嵌めます。(これはオブジェクト指向PGMの多態性といいます。)
  最後にApplication.Run;でプログラムを立ち上げます。あとはこの
Applicationというプログラムの部品(入れ物:ケースにあたる部品だと
思って下さい。)がボタンがクリックされたとか、ドラッグされたとか
キーで何か入力されたという信号を待ち構えて監視しているというのが
Delphiプログラムの動作の超基本になります。動作に影響を及ぼす信号を
イベントといいます。

まとめ

(とりあえずの理解として、以下のようにまとめ)
・オブジェクトはメインプログラムで使う部品。
・クラスは部品の規格のようなもの。部品の振舞いを規定。
・DelphiはApplicationという入れ物とFormという中身の2つの部品で動く。
・Applicationという入れ物は、(変なことしなければ)普通どのDelphiプログラムでも共通。

さて、Formの中身をさらに色々な部品で組み立てていくのが、Delphi流のプログラミングだ。

Navigation




Memo


・プロジェクトファイルはメインルーチンである。
・プロジェクトファイルは、プログラム種別宣言/外部ファイル使用宣言/メインルーチンが主な要素。(ととりあえず理解しよう。dllとか色々あるが・・・)
・usesは使用する外部ファイル(=ユニットファイル)を宣言する。
・beginとendで囲まれたところがプログラムである。
・プロジェクトファイルは「.」ピリオドで終わる。(実はユニットも同じ)
・オブジェクト(プログラムの部品)の宣言は

 オブジェクト名:クラス名;

 と一つの文で行う。「;」は文の区切り記号。

追加情報(この時点で混乱するようなら読まないこと。)
・オブジェクトの宣言は実は変数の宣言である。  Application:TApplication;と同様に

 a:integer;

と整数型の変数aを宣言する。ここで述べたプログラムの部品=オブジェクトはクラス型という型の変数である。