2011-10-03 4 views
3

私はTStringListの変数をprivateセクションに宣言しました。ボタンのクリックイベントで、そのTStringListオブジェクトにアクセスしたいと思います。Delphi StringListオブジェクトがどのように作成されたかを確認します

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

私がそのボタンをクリックするたびに、新しく作成され、メモリがその変数に割り当てられます。私たちは、オブジェクトを決定することができますが、その変数のために作成され、アクセス違反エラーを与えることはありませんを使用するプロパティ/関数はありますか?

+0

注意深い答えはすべて、変数/フィールドを初期化して暗黙の初期化を行うのを忘れることです。 –

+0

+1アクセス**実践:-) –

+4

@Downvoter Delphiのクラスインスタンスは実際にはゼロで初期化されています。これは確かに信頼できるものです。デストラクタにコードを書くたびにそれに頼らなければなりません。 –

答えて

9
if not Assigned(sVariable) then 
    sVariable:= TStringList.Create; 
sVariable.add('Test1'); 
5

これにアプローチするもう一つの方法は、Davidの答えを拡張することです。これは、readメソッドを使用したプロパティによるものです。

編集:オーバーライドされたデストラクタにフリーコールを追加しました。

+0

これは、リストがコードの複数の部分から使用される可能性があるが、1つの場所でしかアクセスされない場合はおそらく過度の使用である可能性がある場合は、より良いアプローチです。 –

関連する問題