6

プロジェクト ディレクトリに関連する情報を格納する必要があるコンポーネントを作成します。コンポーネントのプロパティが変更されるたびに、ファイルを書き込む必要があります。では、設計時にコンポーネントが現在のプロジェクト ディレクトリを特定するにはどうすればよいでしょうか。

前もって感謝します

編集:
コードをコンパイルするときに常に最新バージョンを取得できるように、コンポーネントのプロパティが変更されるたびに Delphi ソース ファイルを生成したいと考えています。一種のコードジェネレーターと考えてください。

現時点では、ソースを保存するパス全体とファイル名を設定していますが、別の開発者マシンにプロジェクトを簡単にコピーできるように、プロジェクト (またはコンポーネントを含むフォーム/データ モジュール) への相対パスを好みます。

4

5 に答える 5

5

Delphi 7 以降、ToolsAPI ユニットは、現在のプロジェクトの IOTAProject インターフェイスを返す getActiveProject 関数を定義します。

IOTAProject の fileName プロパティは、プロジェクトのメイン ソース ファイル (通常は .dpr ファイル) の完全なパスを返します。

したがって、多くの場合、次のような単純な命令を使用できます。

if csDesigning in componentState then
    appFolderPath := extractFilePath( getActiveProject.fileName ) 
else
    appFolderPath := extractFilePath( application.exeName );

(そして、上記の Heinz の例のように 2 つのユニットを使用する必要はありません)

于 2011-09-08T12:19:52.227 に答える
2

コンポーネントはアプリケーションに配置され、Delphi IDE からアプリケーションの一部として実行されるため、コンポーネントはソース パスにアクセスできません。

プロジェクト パスにアクセスしたい場合、または IDE 内のプロセスを自動化したい場合。コンポーネントではなく、OpenTools API を使用して IDE エキスパートを作成する必要があります。

于 2010-03-12T16:58:14.843 に答える