15番会議室「FAQ編纂委員会」に寄せられた「よくある質問の答え」
[Q]
オブジェクトを格納するクラス型変数の扱いかたがわかりません。
クラス型変数を宣言して参照するとGPFが出たりして困っています。
[A]
クラス型変数は実はオブジェクトへのポインタです。変数を使う前に必ず
実体を生成して,変数に代入しておく必要があります。
使い終わったら必ず廃棄するのが原則ですが,ビジュアルコンポーネント
の場合には,生成の時に指定するOwnerやParentによって自動的に廃棄
されますから,自分でFreeする必要はありません。また設計時に貼り付けた
コンポはFormといっしょに自動で生成,代入してくれます。
[例]
type
TForm1 = class(TForm)
Button1: TButton;
procedure Form1Create(Sender: TObject);
procedure Form1Destroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
MyList: TList; { 自分で生成,廃棄する必要あり }
MyShape: TShape; { 自分で生成する必要あり }
end;
........
procedure TForm1.Form1Create(Sender: TObject);
begin
MyList := TList.Create;
end;
procedure TForm1.Form1Destroy(Sender: TObject);
begin
MyList.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
MyShape := TShape.Create(Self); { Form1がOwnerになる }
MyShape.Parent := Self;
MyShape.Name := 'MyShape';
end;
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum FDELPHIに寄せられる質問の中から、よくある質問への回答を FDELPHIのメンバーがまとめたものです。 したがって、これらの回答はボーランド株式会社がサポートする公式のものではなく、掲示されている内容についての問い合わせは受けられない場合があります。
Copyright 1996-1998 Delphi Users' ForumFAQ編纂委員会
|