コンストラクタは、オブジェクトの生成と初期化を行うメソッドです。コンストラクタは、キーワード constructor を用いメソッド名を Create にします。この Create という名前は Delphi における慣習のようです。
一方、デストラクタはキーワード desutructor を用い、そのメソッド名を Destroy にしてやります。デストラクタの役割は生成されたオブジェクトを破棄します。
それでは早速例を見てみましょう。Button と RadioGroup が貼り付けてあります。
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; RadioGroup1: TRadioGroup; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; TBookShelf = class(TObject) private FBookArray: array[0..3] of string; public constructor Create; // コンストラクタ destructor Destroy; override; // デストラクタ procedure ShowBook(i: Integer); end; var Form1: TForm1; BookShelf: TBookShelf; implementation {$R *.dfm} constructor TBookShelf.Create; begin // 初期化 FBookArray[0] := 'Delphi6'; FBookArray[1] := 'Borland'; FBookArray[2] := 'Windows'; end; destructor TBookShelf.Destroy; begin inherited; end; procedure TBookShelf.ShowBook(i: Integer); begin ShowMessage('タイトルは ' + FBookArray[i] + ' です。'); end; procedure TForm1.FormCreate(Sender: TObject); begin // (* ブレークポイント *) // オブジェクト生成 BookShelf := TBookShelf.Create; RadioGroup1.Items.Add('Delphi6'); RadioGroup1.Items.Add('Borland'); RadioGroup1.Items.Add('Windows'); RadioGroup1.ItemIndex := 0; end; procedure TForm1.FormDestroy(Sender: TObject); begin BookShelf.Free; // 破棄(デストラクタの呼び出し) end; procedure TForm1.Button1Click(Sender: TObject); begin // ShowBook の呼び出し BookShelf.ShowBook(RadioGroup1.ItemIndex); end; end.
コンストラクタで、FBookArray を初期化している点に注目してください。BookShlef := TBookShelf.Create; を実行すると、TBookShelf のコンストラクタが呼ばれ、FBookArray フィールドを初期化していることになります。もう少し具体的に実行手順が見たい場合は、(* ブレークポイント *) とコメントした所に、ブレークポイントを設置して、F7 キーを押していって下さい。詳しいやり方は、こちらにあります。F7 キーを押すごとに一文ずつ順に実行していきますので、手順が良く分かると思います。
また、生成したオブジェクトを破棄する場合には、デストラクタ Destroy を直接呼び出さずに BookShelf.Free; と Free メソッドを使っています。実際にはオブジェクトを破棄する場合には直接 Destroy は呼ばずに Free を呼ぶようにして下さい。Free メソッドはオブジェクトが nil でないかどうかをチェックしています。そして、nil でないなら Destroy を呼び出します。