Embarcadero Delphi
DelphiでのRTTIの使用
サーチ…
前書き
Delphiは10年以上前にRTTI(Runtime Type Information)を提供しました。しかし今日でも、多くの開発者はリスクとメリットを十分に認識していません。
要するに、実行時型情報は、実行時にメモリに設定されるオブジェクトのデータ型に関する情報です。
RTTIは、オブジェクトの型が特定のクラスまたはその子孫の型であるかどうかを判断する方法を提供します。
備考
デルタのRTTI - EXPLAINED
Delphiの実行時の型情報 - それは何でもできますか? Brian Longの記事では、DelphiのRTTI機能を紹介しています。 Brianは、設計時の環境を実現するためにDelphiでのRTTIのサポートが第一に追加されたと説明していますが、開発者は特定のコードの簡略化を達成するためにも活用できます。この記事ではRTTIクラスの概要といくつかの例を紹介します。
例としては、任意のプロパティの読み取りと書き込み、共通の祖先を持たない共通のプロパティ、あるコンポーネントから別のコンポーネントへのプロパティのコピーなどがあります。
基本クラス情報
この例では、 ClassType
およびClassParent
プロパティを使用してコンポーネントの祖先を取得する方法を示します。ボタンButton1: TButton
とリストボックスListBox1: TListBox
をフォームTForm1
ます。
ユーザーがボタンをクリックすると、ボタンのクラスの名前と親クラスの名前がリストボックスに追加されます。
procedure TForm1.Button1Click(Sender: TObject) ;
var
ClassRef: TClass;
begin
ListBox1.Clear;
ClassRef := Sender.ClassType;
while ClassRef <> nil do
begin
ListBox1.Items.Add(ClassRef.ClassName) ;
ClassRef := ClassRef.ClassParent;
end;
end;
リストボックスには、ユーザーがボタンをクリックした後に次の文字列が含まれます。
- TButton
- TButtonControl
- TWinControl
- TControl
- TComponent
- TPersistent
- TObject
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow