問題タブ [rtti]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - DevExpress TcxFilterOperatorKindを文字列との間で変換しますか?
これは、DevExpressグリッドのフィルターからfiltertype演算子を取得するために使用するコードスニペットです。OperatorKindToStrは、フィルターからoperatorkindを文字列として抽出し、xmlファイルに格納するために使用されます。StrToOperatorKindは、文字列をxmlから変換して、フィルターに演算子の種類を設定するために使用されます。
どうやら私はStrToOperatorKindとOperatorKindToStrを少し賢くしたいと思っています。VCL TypeInfoでGetEnumPropメソッドを試しましたが、機能しません。では、TcxFilterOperatorKindプロパティをaFilterItem変数から文字列に抽出し、TcxFilterOperatorKindに戻すにはどうすればよいでしょうか。
c++ - Qt RTTI トラブル
サブクラス化によってではなく、イベント (マウスの移動やクリックなど) をinstallEventFilter処理するためには、イベント ハンドラーを使用して提供する必要があります。そうしているうちに、RTTI サポートで問題が発生しました。つまり、typeid().name()どのQObject *オブジェクト イベントがトリガーされたかに関係なく、常に問題が発生します。もちろん、別の解決策があります---dynamic_castヌルポインターチェックが続きますが、個人的にはそれがきれいだとは思いません(そのようなチェックを複数回避けたいと思います)。具体的には、RTTI が有効な (/GR) Visual C++ で動作するように作成しなかった例を次に示します。
c++ - C++ のランタイム型情報
C++ のランタイム型制御とは何ですか?
delphi - 列挙型で「typehasnotypeinfo」エラーが発生するのはなぜですか
最初のメンバーに通常の0(ゼロ)ではなく1(1)の序数値を持たせたい次の列挙型を宣言しました。
たとえばGetEnumName()の呼び出しの一部として、TypeInfo()を呼び出すと、コンパイラエラーが発生します。
エラー:「E2134:タイプ'TMyEnum'にはtypeinfoがありません」
どうしてこれなの?
クラスがtypeinfoを持つのは、 $ Mコンパイラオプションを有効にしてコンパイルした場合、または( TPersistentなどのクラスから派生した)場合のみですが、列挙型のtypeinfoを持つための特別な条件はないと思いました。
delphi - TPersistent + インターフェイス、Delphi
TPersistent に基づいており (RTTI を格納する)、デフォルトのインターフェイス処理 (QueryInterface、_AddRef、_Release) を含むクラスが必要です ... 探しているクラス名は何ですか?
delphi - 新しい RTTI を介してイベント ハンドラーを設定する方法は? [D2010]
新しい RTTI モジュールをいじってみたところ、新しいユーティリティでイベント ハンドラを設定する方法が見つかりませんでした。このようなことを試してみてください:
SetValue には TValue を渡す必要がありますが、TValue を介して TMethod を表す方法をまだ見つけていません。コメントはありますか?
ps。副次的な質問.. RTTI 変数の前に「L」を付けるのは慣例のようです (IMO の良い例で、メタコードはすぐにパズルに変わります)。しかし、それは実際には何を表していますか?
c++ - C++ での RTTI フラグの混合
C++ で静的にリンクされた C++ ライブラリが複数ある場合、それらが有効/無効なランタイム タイプ情報 (RTTI) の異なる値でコンパイルされている場合、クラス オブジェクトを共有 (関数との間で受け渡し) することは可能ですか?
--編集: 回答ありがとうございます。私が心配していた具体的なことは 1 でした。RTTI を有効にすると、静的 (非ポリモーフィック型) の sizeof の動作が変わりますか?
2. RTTI 対応ライブラリでクラスを作成し、それを別の非 RTTI 対応ライブラリに渡すと、仮想メソッドは正しく機能しますか。(およびその逆)
最後に 3. RTTI 対応ライブラリでクラスを作成する場合、そのオブジェクトを非 RTTI 対応ライブラリに渡すと、そのオブジェクトで引き続き使用できますか? ...私はそうではないと思います.とにかくそれは悪い考えのようです...私はただ興味があります.
c++ - C++ で typeof する方法
C++ で C# typeof-command の動作をシミュレートする方法は?
C# の例:
電話:
C++ を使用してこれを実装する方法は? おそらくQTまたはBoostライブラリが解決策を提供しますか?
ファイル (.so または .dll) からこれらの種類のオブジェクトをロードする方法で .GetPlugins(...) を実装したい場合はどうでしょうか?
delphi - RTTIを使用してDelphiでアクセスフィールドを取得するには?
次の点を考慮してください。
TMainClass.GetValue では、TMainClass フィールドの値を取得しようとしています。
別のクラスのインスタンスであるフィールドの値を取得する別の方法があるでしょうか?
delphi - 複数レベルの継承でプロパティが最初に公開されるクラスを検出する
Typinfo ユニットを使用すると、次のスニペットに示すように、プロパティを簡単に列挙できます。
ただし、必要なのは、各プロパティが継承する正確なクラスを把握することです。たとえば、TControl では、Tag プロパティは TComponent から取得され、継承の深さは 1 になります (0 は、TControl 自体で宣言された Cursor などのプロパティです)。
どのクラスが最初にプロパティを定義したかがわかれば、継承の深さを計算するのは簡単です。私の目的では、プロパティが最初に公開された場所は、最初に表示された場所です。
Delphi 2007 を使用しています。詳細が必要な場合はお知らせください。すべての助けに感謝します。