4

private セクションで TStringList の変数を宣言しました。ボタン クリック イベントで、その TStringList オブジェクトにアクセスしたいと考えています。

sVariable:= TStringList.Create;
sVariable.add('Test1');

新しく作成され、メモリがその変数に割り当てられるたびに、そのボタンをクリックするたびに。その変数に対してオブジェクトが作成されているかどうかを判断できるプロパティ/関数はありますか?アクセス違反エラーも発生しませんか?

4

2 に答える 2

10
if not Assigned(sVariable) then
  sVariable:= TStringList.Create;
sVariable.add('Test1');
于 2011-10-03T14:12:11.410 に答える
5

それにアプローチする別の方法は、デビッドの答えを拡張して、読み取りメソッドを持つプロパティを使用することです。

TMyForm = class (TForm)
private
  FStrList : TStringList;
public
  property StrList : TStringList read GetStrList;
  destructor Destroy; override;
end;

implementation

function TMyForm.GetStrList : TStringList;
begin
  if not Assigned(FStrList) then
    FStrList := TStringList.Create;
  Result := FStrList;
end;

destructor TMyForm.Destroy;
begin
  FStrList.Free;
  inherited;
end;

編集:オーバーライドされたデストラクタに Free 呼び出しを追加しました。

于 2011-10-03T14:55:07.043 に答える