2017-04-19 1 views
1

コンパイルの定義または関数/定数/変数は、デザインタイムパッケージ用に作成されているか実行中であるかを判別するために使用できますIDEの中に?IDEでのデザインタイムパッケージまたはコードの実行を確認するコード

パッケージの一部であるユニットの初期化で設定したコードフックがいくつかあります。 IDEにパッケージをインストールするときに、アプリケーションの一部として実行されているときにのみ、このコードを実行する必要はありません。

今のところ私はコンパイラ定義を追加しました。これはコードを削除するデザインタイムパッケージに定義しましたが、これはデザインタイムパッケージの一部であることを示す組み込みコンパイラ定義があるか、 IDE内でコードが実行されているかどうかを調べることができます。人々が内部コンポーネントから使用する古いif csDesigning in ComponentState thenに似ています。

+0

申し訳ありません。あなたの質問を誤解する - 私のせいではなく、あなたのものです。 :-) –

答えて

6

デザインタイムパッケージ用にコードがビルドされているのか、IDE内部から実行されているのかを確認するために使用できるコンパイラ定義や関数/定数/変数はありますか?

号には、我々はパッケージの一部である単位の初期化中にいくつかのコードフック我々が設定しています。 IDEにパッケージをインストールするときに、アプリケーションの一部として実行されているときにのみ、このコードを実行する必要はありません。

このコードは、ユニットのinitializationセクションにはまったく属していません。起動時にアプリケーションコードが呼び出せる別の関数に移動します。私はあなたの設計時パッケージは、直接それがすべき、あなたのランタイムコードをコンパイルされていることを意味するコード

を取り除き、設計時パッケージに定義するコンパイラを追加している今の

まったくやっていない。ランタイムコードとデザインタイムコードは別々のパッケージに入れる必要があります。実行時コードは設計時パッケージに属しておらず、設計時コードは実行時パッケージに属していません。

コンパイラに内蔵されているが、これはありません

設計時パッケージの一部であることを示している定義が。あった場合、私は思っていましたただし、実行時パッケージとデザイン時パッケージを別々に作成した場合、フックコードはランタイムパッケージにのみ含まれます。デザイン時パッケージrequireランタイムパッケージ(実行時コンポーネントにアクセスできるように)を実行することができ、ランタイムパッケージはデザイン時パッケージで設定できるグローバル変数を公開することができます。実行時コードは、その変数が設定されている場合、無視する必要があるものは無視します。

+0

もちろん、ランタイムとデザイン時の部分は別々にする必要があります。この場合、これは「作業中の」ライブラリです。私たちはdesigntimeパッケージとランタイムパッケージを持っていません。ユニットはメインアプリケーションに含まれています。これはあまりエレガントではありませんが、このコードの内部動作を頻繁に変更し、大規模なチームと時間を浪費してパッケージを更新するため、実際に役立ちます。 – Graymatter

+0

"*私たちにはデザインパッケージがあり、ランタイムパッケージはありません。ユニットはメインアプリケーションに含まれています。* "デザインタイムパッケージは、IDEエディタとコンポーネント登録の実装にのみ使用する必要があります。アプリケーションが使用するものは、アプリケーション自体またはアプリケーションが使用するランタイムパッケージに含まれていなければなりません(また、そのようなコードは設計時パッケージには直接含まれていないため、このモデルでは、設計時に設計時間を検出する必要はありませんパッケージ使用。 –

関連する問題